1、二叉树递归遍历很简单,以前序遍历为例说明:
1 void PrefixOrder(Node* node) 2 { 3 if(node!=NULL) 4 { 5 cout<<root->value<<" "; 6 PrefixOrder(root->lchild); 7 PrefixOrder(root->rchild); 8 } 9 }
中序遍历和后序遍历类似。
2、考虑二叉树非递归遍历,思路:前序遍历特点,访问当前节点,然后访问左孩子,左孩子有孩子,继续访问左孩子的左孩子节点,直到没有左孩子,访问右孩子。因此。非递归遍历的思路就是,使用while,记录当前节点,往左一条路走到底,然后原路后退,访问右节点。