package com.heu.wsq.leetcode.tree;
/**
* 112. 路径总和
* @author wsq
* @date 2020/12/22
*
* 给定一个二叉树和一个目标和,判断该树中是否存在根节点到叶子节点的路径,这条路径上所有节点值相加等于目标和。
* 说明: 叶子节点是指没有子节点的节点。
*
* 示例:
* 给定如下二叉树,以及目标和 sum = 22,
* 5
* / \
* 4 8
* / / \
* 11 13 4
* / \ \
* 7 2 1
* 返回 true, 因为存在目标和为 22 的根节点到叶子节点的路径 5->4->11->2。
*
* 链接:https://leetcode-cn.com/problems/path-sum
*/
public class HasPathSum {
private boolean flag = false;
public boolean hasPathSum(TreeNode root, int sum){
if (root == null){
return false;
}
dfs(root, sum);
return flag;
}
private void dfs(TreeNode node, int sum) {
if (flag){
return;
}
if (node.left == null && node.right == null){
if (sum == node.val){
flag = true;
}
}else{
if (node.left != null){
dfs(node.left, sum - node.val);
}
if (node.right != null){
dfs(node.right, sum - node.val);
}
}
}
}
112. 路径总和
最新推荐文章于 2022-02-14 21:13:03 发布