这道题可以用深度优先搜索来写,比如说加入节点左右节点都为空且值等于targetsum则返回true,这里可以使用一个简单的方法来写,就比如说我们每次遍历到一个节点时,用targetsum减去当前节点的值 ,这样的话只要遍历到叶子节点值等于targetsum的值就返回true,这样不用再考虑求和的事,更加简单。
代码如下:
import javax.swing.tree.TreeNode;
// 给你二叉树的根节点root 判断是否有到叶子节点的路径值加起来目标和等于targetSum
// 可以使用深度优先搜索(dfs)
public class hasPathSum {
class Solution{
public boolean hasPathSum(TreeNode root, int targetSum) {
if(root == null) return false;
if(root.left==null&&root.right==null&&targetSum==root.val){
return true;
}
return hasPathSum(root.left,targetSum-root.val)||hasPathSum(root.right,targetSum-root.val);
}
}
}