Java二叉树遍历方式

版权声明:本文为博主原创文章,未经博主允许不得转载。 https://blog.csdn.net/baidu_34122324/article/details/82799084

Java开发工程师–面试积累


二叉树的三种基本遍历方式

  • 先序遍历:先记录根结点,然后记录左结点,最后记录右结点
  • 中序遍历:先记录左结点,然后记录根结点,最后记录右结点
  • 后序遍历:先记录左结点,然后记录右结点,最后记录根结点

注意:这里的根-左-右都是相对而言的,每一个结点都可以看作是根结点。每到一个根结点,就进行顺序的规则判断。


像下图,进行中序遍历。用【左根右】的记录原则
1.从根结点A开始,发现节点A有左子结点B。跳到B,发现节点B有左子结点C。跳到C,发现C没有左子结点,记录C
2.回到B,记录B。(B相对于左子结点C与右子结点D来说是根节点)
3.现在在B,已记录此子树的左C中B,根据匹配原则【左中右】,下一个是右,也就是右子结点D,跳到右子结点D,记录D
4.此时回跳B,发现B已遍历结束,再回跳A(根结点),记录根结点A
5.对于根结点A来说,根据匹配原则【左中右】,左中都已记录完,轮到右边了。A跳右子结点E。右子结点E,没有左子结点,此时记录根结点E
6.E无左子结点,同时记录完了根节点E。再遍历E的右子结点,跳到右子结点F,记录F。结束。
二叉树遍历

附加:怎样遍历二叉搜索树可以得到一个从小到大的有序序列?
A.前序 B.中序 C.后序 D.都不行
解答:二叉搜索树有一个很重要的特性:树中任何结点的左子树种所有结点的值均比该结点小,右子树种所有结点的值均比该结点大。对二叉搜索树进行中序遍历即可得到一个递增排序的遍历。


猜你喜欢

转载自blog.csdn.net/baidu_34122324/article/details/82799084