每日一道算法题LeetCode112:Path Sum(路径总和 )

路径总和

  • 题目
  • 分析
  • 题解
    • 递归

题目

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

说明: 叶子节点是指没有子节点的节点。
每日一道算法题LeetCode112:Path Sum(路径总和 )_第1张图片

分析

题目要求路径必须由根节点到叶节点,就让题目简单了很多,递归一直查到叶节点即可。递归出口有两个,到达叶节点,并且路径和为sum,返回true;到达null节点,返回false

题解

递归

    public boolean hasPathSum(TreeNode root, int sum) {
        if(root == null)  return false;
        else if(root.left == null && root.right == null && sum==root.val)    return true;     // 到叶节点并且sum等于叶节点的值
        else    return hasPathSum(root.left,sum-root.val) || hasPathSum(root.right,sum-root.val);   // 没到叶节点
    }

你可能感兴趣的:(#,每日一道算法题)