二叉树非递归遍历

非递归方式实现先序遍历

具体过程:

1.首先申请一个新的栈,记为stack。

2.然后将头节点head压入stack中。

3.每次从stack中弹出栈顶节点,记为cur,然后打印cur节点的值,如果cur右孩子不为空的话,将cur的右孩子先压入stack中。最后,如果cur的左孩子不为空的话,将cur的左孩子压入stack中。

4.不断重复步骤三,直到stack为空,全部过程结束。

 

非递归方式实现中序遍历

具体过程:

1.申请一个新的栈,记为stack,申请一个变量cur,初始时令cur等于头节点。

2.先把cur节点压入栈中,对以cur节点为头的整棵子树来说,依次把整棵树的左边界压入栈中,即不断令cur=cur.left,然后重复步骤二。

3.不断重复步骤二,直到发现cur为空,此时从stack中弹出一个节点,记为node,打印node的值,并让cur=node.right,然后继续重复步骤2.

4.当stack为空并且cur为空时,整个过程结束。

posted @ 2016-04-10 21:17  嘟嘟死胖子  阅读(163)  评论(0编辑  收藏  举报