路径之和
题目描述
给你二叉树的根节点root
和一个表示目标和的整数targetSum
。判断该树中是否存在根节点到叶子节点的路径,这条路径上所有节点值相加等于目标和targetSum
。如果存在,返回true
;否则,返回false

思路
- 确定递归函数的参数和返回类型
- 参数:传入根节点、计数器记录路径和
- 递归函数什么时候需要返回值?什么时候不需要返回值?这里总结如下三点:
- 如果需要搜索整棵二叉树且不用处理递归返回值,递归函数就不要返回值
- 如果需要搜索整棵二叉树且需要处理递归返回值,递归函数就需要返回值
- 如果要搜索其中一条符合条件的路径,那么递归一定需要返回值,因为遇到符合条件的路径了就要及时返回(本题的情况)
- 确定终止条件
- 用计数器统计这一条路径的和
- 不要去累加然后判断是否等于目标和,那样代码比较麻烦,可以用递减,让计数器
count
初始为目标和,然后每次减去遍历路径节点上的数值 - 如果最后
count == 0
,同时到了叶子节点的话,说明找到了目标和 - 如果遍历到了叶子节点,
count
不为0,就是没找到
- 确定单层递归的逻辑
- 因为终止条件是判断叶子节点,所以递归的过程中就不要让空节点进入递归了
- 递归函数是有返回值的,如果递归函数返回
true
,说明找到了合适的路径,应该立刻返回
代码
Go
|
|