Day18 ● 513.找树左下角的值 ● 112. 路径总和 113.路径总和ii ● 106.从中序与后序遍历序列构造二叉树 105.从前序与中序遍历序列构造二叉树

1. 513.找树左下角的值

题目
题解

递归法,我考虑了一个情况,如果最后一行只有一个右孩子,其实也符合题意,因为最后一行没别的,他就是最左边.

其实递归法确定哪个顺序遍历后,模板套上去,比如先左后右,剩下的就是看要存什么,要借助哪些辅助变量来实现第三步的逻辑

比如这道题,用递归确定是不是最后一行的话,你就得知道他的深度,depth就得有,你还得和最大深度比较,因为如果可能左子树的最大深度是2,到了右子树成3了,因此要有maxDepthcurDepth.

  • 法2 如果用迭代呢?
    迭代就是BFS,一层一层走,while用来看这层走完没,进了while先把这层的长度冻结,然后让for走这段距离,这样就把这层走完了
    那关于具体的操作最左边的呢?for就是遍历每一层,i===0就是最左边的节点

2. 112 路径总和

题目
题解

自己做出来了.和前面的找所有路径的如出一辙.
关键点就是在他是怎么解决分叉路口的.
当时的那道题是先处理中,也就是设置node.val+'->'把当前路径冻结,传进下一次的递归中.比如当前是1->,在分叉路口的时候,左节点和右节点传进去的都是1->,比如左节点就是叶子节点,对叶子节点的终止处理存到递归外定义好的res集中.

此题一样,一直递归增加值,叶子节点加上了如果刚好,就把在递归外定义的res改为true


3. 113.路径总和2


4.从中序和后序遍历序列构造二叉树

题目
题解

先看清题目.人给的是数组,不是表现成数组的二叉树.
所以中序后序就是左中右,左右中的存放模式.
特点:

  • 后序: 最后一个一定是根节点.(切割后的某子树也一样,切出来的那一堆的最后一个就是子树的根节点.)
  • 中序:找到根节点的话,左边就是左子树,右边就是右子树.

写的时候碰到的问题:
对于左子树,后序的个数拿的和中序的一样,因为


5. 105.从前序和中序遍历序列构造二叉树


最后编辑于
©著作权归作者所有,转载或内容合作请联系作者
【社区内容提示】社区部分内容疑似由AI辅助生成,浏览时请结合常识与多方信息审慎甄别。
平台声明:文章内容(如有图片或视频亦包括在内)由作者上传并发布,文章内容仅代表作者本人观点,简书系信息发布平台,仅提供信息存储服务。

相关阅读更多精彩内容

友情链接更多精彩内容