题解 | #二叉树中和为某一值的路径(一)#

二叉树中和为某一值的路径(一)

http://www.nowcoder.com/practice/508378c0823c423baa723ce448cbfd0c

解题思路

  • 临界条件:叶子节点(左右子树为空)
  • 满足条件:路径之和为sum

解题步骤

  • 左右子树同时递归查找,找到一个满足条件,即为找到,故左右子树的递归查找用“或”连接
  • 递归查找时,抛去根节点的值,左右子树继续向下查找
  • 叶子节点节点值等于sum找到

注意

  • 临界条件
  • 注意审题,二叉树中的值可以为负值,故sum可以为 0或者负值
/*
 * function TreeNode(x) {
 *   this.val = x;
 *   this.left = null;
 *   this.right = null;
 * }
 */

/**
  * 
  * @param root TreeNode类 
  * @param sum int整型 
  * @return bool布尔型
  */
function hasPathSum( root ,  sum ) {
    // write code here
    // 先处理特殊情况,空树
    if(!root)
        return false;
    // 定义递归函数
    function findSum(proot,sum){
        // 特殊情况,空树
        if(!proot)
            return false;
        // 叶子节点,且节点值符合要求,找到了!!!
        if(!proot.left && !proot.right && proot.val==sum)
            return true;
        // 没找到,继续向下递归查找,左子树或右子树找到一条便返回true
        return findSum(proot.left,sum-proot.val)||findSum(proot.right,sum-proot.val);
    }
    // 调用递归函数
    return findSum(root,sum);
}
module.exports = {
    hasPathSum : hasPathSum
};
全部评论

相关推荐

有没有什么神仙小厂啊!想去,感觉对大厂去魅了
野猪不是猪🐗:小厂最大的问题就是,你不知道哪天公司就直接🈚️了。大厂被裁,拿着大厂履历也不难再找,小厂寄了那后面有没有人要你就不好说了
点赞 评论 收藏
分享
2024-12-20 18:56
已编辑
武汉轻工大学 后端
点赞 评论 收藏
分享
评论
4
收藏
分享

创作者周榜

更多
牛客网
牛客企业服务