二叉树先序遍历

向右看齐 2022-07-10 10:57 305阅读 0赞

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

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

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

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

先序遍历: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

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

Center

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

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

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

发表评论

表情:
评论列表 (有 0 条评论,305人围观)

还没有评论,来说两句吧...

相关阅读

    相关

    前两天面试,看见了个笔试题,关于二叉树的,今天算是把自己的一点理解写下来吧。 今天看网文,才想起来,二叉树的先序遍历、中序遍历、后序遍历, 遍历顺序都是

    相关

      二叉树不同于列表、链表、栈、队列这些线性结构,也不同于图这种非线性结构,它属于半线性结构。我们在搞二叉树的时候不要从轮子造起,而要善于引用此前的工作成果,转化成以前已经玩烂