void PostorderTraversal(Node *root) { if (root != NULL) { PostorderTraversal(root->left); PostorderTraversal(root->right); if (root->val != 0) { printf("%d ", root->val); } } }
void Tree::PostorderTraversal(Node *node, TraversallCallBack f) { if (node) { PostorderTraversal(node->Left, f); PostorderTraversal(node->Right, f); f(node); } }
void Tree::PostorderTraversal() { if (!Root) cout << "Tree is empty" << endl; else PostorderTraversal(Root, PrintNodeFunc); }
int main(int argc, char argv[]) { Node *root; int T; int N; scanf("%d ", &T); for (int test_case = 1; test_case <= T; test_case++) { scanf("%d ", &N); root = GetNode(); MakeTree(root, N); printf("# Preorder\n"); PreorderTraversal(root->left); putchar('\n'); printf("# Inorder\n"); InorderTraversal(root->left); putchar('\n'); printf("# Postorder\n"); PostorderTraversal(root->left); putchar('\n'); if (root != NULL) { DeleteNode(root); //DeleteAllNode(); } } return 0; }
Tree::~Tree() { PostorderTraversal(Root, FreeNodeFunc); }