二叉树非递归遍历

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,记录当前节点,往左一条路走到底,然后原路后退,访问右节点。

posted on 2013-11-29 18:41  Andy Niu  阅读(209)  评论(0编辑  收藏  举报