问题描述
给定一个二叉树的根和一个整数值,如果二叉树中有根节点到叶子节点的路径上节点值的和等于给定的整数值,则返回真,否则返回假。
叶子节点:没有孩子的节点。
示例
示例1
Input: root = [5,4,8,11,null,13,4,7,2,null,null,null,1], targetSum = 22
Output: true
Explanation: The root-to-leaf path with the target sum is shown.
示例2
Input: root = [1,2,3], targetSum = 5
Output: false
Explanation: There two root-to-leaf paths in the tree:
(1 —> 2): The sum is 3.
(1 —> 3): The sum is 4.
There is no root-to-leaf path with sum = 5.
示例3
Input: root = [], targetSum = 0
Output: false
Explanation: Since the tree is empty, there are no root-to-leaf paths.
解决方案描述
使用递归,判断当前节点是否为空节点,如果为空,则判断当前节点值是否等于指定值。递归判断左子节点,并将指定值设为当前指定值减掉当前节点值,递归判断右子节点,并将指定值设为当前指定值减掉当前节点值,左子节点和右子节点的返回值均为真,则返回真。
- 判断当前节点是否为空,如果为空则返回假。
- 判断当前节点是否是叶子节点,如果是则判断当前节点值是否等于指定值,如果等于指定值则返回真,否则返回假。
- 递归判断左子节点,并将指定值设为当前指定值减掉当前节点值后的值。
- 递归判断右子节点,并将指定值设为当前指定值减掉当前节点值后的值。
- 左子节点的返回值或上右子节点的返回值为当前函数的返回值。
具体代码见下面的链接
二叉树路径和(c#)