美文网首页
leetcode 路径总和

leetcode 路径总和

作者: 伊凡vnir | 来源:发表于2020-02-24 22:01 被阅读0次

    关注公众号 长歌大腿,发送“机器学习”关键字,可获取包含机器学习(包含深度学习),统计概率,优化算法等系列文本与视频经典资料,如《ESL》《PRML》《MLAPP》等。

    题目描述:

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

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

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

              5
             / \
            4   8
           /   / \
          11  13  4
         /  \      \
        7    2      1
    

    返回 true, 因为存在目标和为 22 的根节点到叶子节点的路径 5->4->11->2。

    解题思路:

    根据题目描述,递归到叶节点如果有一个满足则整体返回true,故可以递归遍历到子节点, 以 或 的方式返回结果。

    代码实现(Java):

    /**
     * Definition for a binary tree node.
     * public class TreeNode {
     *     int val;
     *     TreeNode left;
     *     TreeNode right;
     *     TreeNode(int x) { val = x; }
     * }
     */
    class Solution {
        public boolean hasPathSum(TreeNode root, int sum) {
            if(root == null){
                return false;
            }
            if(root.left == null && root.right == null){
                return sum - root.val ==0;
            }
            return hasPathSum(root.left,sum-root.val) || hasPathSum(root.right,sum-root.val);
        }
    }
    

    相关文章

      网友评论

          本文标题:leetcode 路径总和

          本文链接:https://www.haomeiwen.com/subject/oytgqhtx.html