二叉树非递归遍历
非递归方式实现先序遍历
具体过程:
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为空时,整个过程结束。

浙公网安备 33010602011771号