本文共 1129 字,大约阅读时间需要 3 分钟。
题目描述
给定一个二叉树和一个值 sum,判断是否有从根节点到叶子节点的节点值之和等于 sum的路径,
例如: 给出如下的二叉树, sum=22, 返回true,因为存在一条路径 5→4→11→2的节点值之和为 22示例1
输入
{1,2},0返回值
false示例2
输入
{1,2},3返回值
true
JAVA:
import java.util.*;/* * public class TreeNode { * int val = 0; * TreeNode left = null; * TreeNode right = null; * } */public class Solution { /** * * @param root TreeNode类 * @param sum int整型 * @return bool布尔型 */ public boolean hasPathSum (TreeNode root, int sum) { if (root == null) { return false; } // write code here return dfs(root, sum, 0); } public boolean dfs(TreeNode node, int target, int sumNow) { if (node == null) { return false; } sumNow += node.val; if (node.left == null && node.right == null) { if (sumNow == target) { return true; } else { return false; } } else { //左右子树有一个满足即可 return dfs(node.left, target, sumNow) || dfs(node.right, target, sumNow); } }}
- dfs,注意怎么返回传递,非叶子节点返回左右子树的结果或集,即左右子树有一方满足即为true
转载地址:http://sfldi.baihongyu.com/