二叉树先序遍历

前两天面试,看见了个笔试题,关于二叉树的,今天算是把自己的一点理解写下来吧。



今天看网文,才想起来,二叉树的先序遍历、中序遍历、后序遍历,

遍历顺序都是相对于父节点写的,也就是先遍历父节点、中间遍历父节点,最后遍历父节点。


讲完理论,来看一下今天理解的一个二叉树题


先序遍历:FBACDEGH

中序遍历:ABDCEFGH


一下只适用于已知先序遍历和中序遍历的情况进行的分析:


//①判断传过来的树的中序遍历是否为空


//②找到树的先序遍历中第一个节点


//③找到这个节点在中序遍历中的位置


//④这个节点左边即为它的左树,右边即为它的右树


//⑤判断这个节点的左树是否为空,为空的话判断这个节点右边是否为空


有全局变量:firstTree

                      middleTree

                      firstIndex=0


1、firstTree      = FBACDEGH;

      middleTree = ABDCEFGH;

2、执行①,向①中传参数,判断middleTree:ABDCEFGH             

                    返回判断结果true;

3、执行②,向②中传参数:FBACDEGH  

                    取到相应位置firstIndex的节点,超出FBACDEGH  的长度则跳出;           

                    取到F

4、执行③,向③中传参数:ABDCEFGH

                    返回F位置middleIndex=5;

5、执行④,向④中传参数:ABDCEFGH

                     leftTree   = ABDCE 

                     rightTree = GH 

6、执行⑤,向⑤中传参数:ABDCEFGH,index=5

                    if(leftTree不为空){

                        middleTree= leftTree;

                    }else{

                        middleTree= rightTree;

                   }

7、重复 2~7


以下就是我得到的二叉树:


以前只是做了题,这也是我第一次梳理算法的代码流程

以上就是我的理解了,有不对的或者需要修改的,大家可以指出来

要去准备面试的材料了,代码以后再补吧。

  • 2
    点赞
  • 5
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值