先序遍历:(先左后右)
先左树再右树遍历 void PreOrderTraverse(BitTree T) { if(T) { cout<<T->data<<endl; PreOrderTraverse(T->left); PreOrderTraverse(T->right); } } 先序遍历很有点类似于栈,可以用栈来模拟: /*这里的树结点是通过栈来建立的,只用于普通测试*/ void g(TreeNode *root) { TreeNode * stack[MaxSize]; int top; TreeNode *p; top=0; p=root; while(p!=NULL || top>0) { while(p!=NULL) { cout<<(*p).val<<endl; stack[top++]=p; p=(*p).left; }; if(top>0) { p=stack[--top]; p=(*p).right; } } }
|
中序遍历:
444 |
后序遍历: