专题二:二叉树的深度搜索(求根节点到叶节点数字之和)
以leetcode129题为例
题目分析:
从根到叶子结点的一条路径组成的数字,所有数字加在一起返回
算法原理分析:
总问题:给一个结点就返回所有到叶子结点的所有数字之和
在看子问题是不是也这样
我们要分析子问题是不是也一样,要注意分析1,和分析2,和分析4/5/6/等等结点都是一样吗
我们可以抓住其中一个结点分析
以5这个结点分析,如何计算,是不是上层传12,结合这个结点5,
然后去结合左结点8 ,形成1258
结合右结点9,形成1259
因为左结点8已经是叶子结点了就可以当作返回值返回给上一层
然后右节点9接着按照这个方法递归下去,拿到12594+125931的值然后返给结点9
结点8和结点9在相加返回给5
我们在处理每一个问题都是这样
第一步,通过上层传下来的结合本结点形成一个新的数字
第二步:传给左结点
第三步:传给右结点
第四步:把左结点和右节点的返回值相加
注意出口在第二层:因为你是要结合上一层的才返回出去