非递归方式遍历二叉树

2018-12-14  本文已影响0人  whynotybb

非递归方式访问二叉树,前序和中序的顺序一致,都是先访问完左子树,所以先是一个while循环,顺着左子树走完之后,再去访问根结点和右子树。还有一点是比较重要的,因为二叉树最多有两个子结点,所以在访问结点的右子结点之前,应该将根结点在栈中移除,要不然会陷入死循环。或者另一种方式就是记录访问完的结点。

遍历二叉树有四种方式:前序遍历、中序遍历、后序遍历和层次遍历。

非递归方式前序遍历二叉树:

非递归中序遍历二叉树:应用1:二叉搜索树的最小第K个数,二叉搜索输的中序遍历是有序的。

二叉树中序遍历循环方式代码

后序遍历:最复杂

后序遍历二叉树

层次遍历:

层次遍历二叉树

详细源代码在https://github.com/whynotybb/alg_practice/tree/master/src/binarytree

上一篇下一篇

猜你喜欢

热点阅读