二叉树和等于某值路径_【每日一题】17.路径总和

3bb4c9568a7040072c8d71e5bebfd024.gif关注我们获取更多计算机考研信息

7c2d2b4cd5a70bc3a1befca36792b41e.png

? 今日习题

给定一个二叉树和一个目标和,判断该树中是否存在根节点到叶子节点的路径,这条路径上所有节点值相加等于目标和。

说明: 叶子节点是指没有子节点的节点。

示例:

给定如下二叉树,以及目标和 sum = 22,

              5

             / \

            4   8

           /   / \

          11  13  4

         /  \      \

        7    2      1

1e34efd3e970d9c6e67c246401ea003b.png

……⏰ 思考时间……

如果你想好答案了

请查看解题思路和代码实现

·解题思路·

深度优先遍历二叉树,每深入一次,sum-根节点的值,当到达叶子节点的时候,判断sum是否等于当前的节点值,如果等于,说明找到了,否则尝试另外一条路径。

·代码实现·

class Solution {
    boolean ans = false;
    public boolean hasPathSum(TreeNode root, int sum) {
        if (root == null) {
            return false;
        }
        dfs(root,sum);
        return ans;
    }

    private void dfs(TreeNode root,int sum) {
        if (root == null) {
            return;
        }

        if (root.left == null && root.right == null) {
            if (sum == root.val) {
                ans = true;
            }
        }

        dfs(root.left,sum - root.val);
        dfs(root.right,sum - root.val);
    }
}

·算法分析·

时间复杂度:O(N)

空间复杂度:O(N

微信关注“字节408考研”,

免费获取各院校计算机软件考研信息与专业课资料!

1a925a92753ff2f58ce9c8fc48db5e7d.png
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值