解题思路:
这道题目本质上还是前序遍历的变种,通过前序遍历过程中,用(sum - root.val ==0 )&& 是否是叶子节点,获得到答案的!
import java.util.*; /* * public class TreeNode { * int val = 0; * TreeNode left = null; * TreeNode right = null; * public TreeNode(int val) { * this.val = val; * } * } */ public class Solution { /** * 这道题就是前序遍历的一种变种 * 思路:遍历 * @param root TreeNode类 * @param sum int整型 * @return bool布尔型 */ public boolean hasPathSum (TreeNode root, int sum) { // 空节点返回false if(root ==null) { return false; } // 找到叶子节点,返回true if(root.left==null && root.right==null && (sum - root.val==0)) { return true; } // sum值减去当前节点值后,再递归减去下层节点值 return hasPathSum(root.left, sum - root.val)|| hasPathSum(root.right, sum - root.val); } }