void PostOrderTraversal(TreeNode * root) { if(root) { PostOrderTraversal(root->Left); PostOrderTraversal(root->Right); std::cout << " " << root->Key<< " " ; } }
void BTree::Print(OrderType Order) const { if(Order ==InOrder) { std::cout << " InOrder" << std::endl; InOrderTraversal(root); std::cout << std::endl; } else if(Order == PostOrder) { std::cout << " PostOrder" << std::endl; PostOrderTraversal(root); std::cout << std::endl; } else if(Order == PreOrder) { std::cout << " PreOrder" << std::endl; PreOrderTraversal(root); std::cout << std::endl; } else if(Order == LevelOrder) { std::cout << " LevelOrder" << std::endl; LevelOrderTraversal(root); std::cout << std::endl; } }
int main() { Node * root =createNode(1); root->left = createNode(2); root->right = createNode(3); root->left->left = createNode(4); root->left->right = createNode(5); root->right->left = createNode(6); PostOrderTraversal(root); return 0; }
void InOrderCreateTree(int Nodes){ //中序遍历建立一棵Nodes个结点的树 enum Last { pop,push } last; int i; int number = -1; char op[5]; Stack * PtrS = (Stack*)CreateStack(); //这里栈内存放的元素是二叉树(结点) BinTree BT,T; int first = 1; last = push; for(i=0;i<2*Nodes;i++){ scanf("%s",op); if( strcmp(op,"Pop")==0 ){ T = (BinTree)Pop(PtrS); last = pop; }else if( strcmp(op,"Push")==0 ){ scanf("%d",&number); if( last==push ){ if( first ){ BT = CreateTreeNode(number); first = 0; T = BT; Push(PtrS,T); continue; } T->Left = CreateTreeNode(number); T = T->Left; }else if( last==pop ){ T->Right = CreateTreeNode(number); T = T->Right; } Push(PtrS,T); last = push; } // LevelOrderTraversal(BT); } //PostOrderTraversal PostOrderTraversal(BT); free(T); free(BT); return ; }