题目:给定一个二叉树和一个目标和,判断该树中是否存在根节点到叶子节点的路径,这条路径上所有节点值相加等于目标和。
public boolean hasPathSum(TreeNode root, int sum) {
if (root == null) {
return false;
}
if (root.left == null && root.right == null && root.val == sum) {
return true;
}
return hasPathSum(root.left, sum - root.val) || hasPathSum(root.right, sum -root.val);
}
老师你好:
leetcode上刷题,我还是有点不理解递归在这里的应用。这里是如何做到
root.val == sum 就相当于相加了所有节点呢?
此外 为什么要 sum - root.val 呢? 是因为root.left 进一步递归,所以要去除该节点么?
谢谢!