leetcode oj java Path Sum

原创 2015年11月18日 22:03:10

问题描述:

Path Sum

Given a binary tree and a sum, determine if the tree has a root-to-leaf path such that adding up all the values along the path equals the given sum.

For example:
Given the below binary tree and sum = 22,
              5
             / \
            4   8
           /   / \
          11  13  4
         /  \      \
        7    2      1

return true, as there exist a root-to-leaf path 5->4->11->2 which sum is 22.

解决方案: 从根节点依次扫描,每次减去父亲节点的值,直到直到叶子节点且减去之后值为0 即可。

package leetcode;

public class hasPathSum {

    /**
     * @param args
     */

    public static boolean hasPathSum(TreeNode root, int sum){
        if(root == null){
            return false;
        }
        if(root.right == null && root.left == null){
            if(sum - root.val == 0)
                {return true;}                    
        }
        
        return hasPathSum(root.left , sum-root.val) ||
                hasPathSum(root.right, sum-root.val);
    }

    public static void main(String[] args) {
        // TODO Auto-generated method stub
        TreeNode root = new TreeNode(5);
        TreeNode rl = new TreeNode(4);
        TreeNode rr = new TreeNode(8);
        TreeNode rll = new TreeNode(11);
        TreeNode rlll = new TreeNode(7);
        TreeNode rllr = new TreeNode(2);
        TreeNode rrl = new TreeNode(13);
        TreeNode rrr = new TreeNode(4);
        TreeNode rrrr = new TreeNode(1);
        
        root.left = rl;
        root.right = rl;
        rl.left = rll;
        rll.left = rlll;
        rll.right = rllr;
        rr.left = rrl;
        rr.right = rrr;
        rrr.right = rrrr;
        
        
        boolean flag = hasPathSum(root, 22);
        System.out.println(flag);
        
    }

}

给出的是完整的代码,可以自己调试。

提交时只需要   hasPathSum 这个方法。

运行结果:

114 / 114 test cases passed.
Status:

Accepted

Runtime: 1 ms
Submitted: 0 minutes ago

版权声明:本文为博主原创文章,未经博主允许不得转载。

相关文章推荐

LeetCode OJ 之 Path Sum II (路径和 - 二)

题目: Given a binary tree and a sum, find all root-to-leaf paths where each path's sum equals the gi...

<LeetCode OJ> 112/113. Path Sum(I / II)

112. Path Sum My Submissions Question Total Accepted: 85016 Total Submissions: 278387 Difficulty...

<LeetCode OJ> 64. Minimum Path Sum

64. Minimum Path Sum My Submissions Question Total Accepted: 62294 Total Submissions: 183284 Dif...

oj.leetcode 2sum 解

  • 2014-10-07 08:21
  • 626B
  • 下载

leetcode解题之112 & 113 & 437. Path Sum java版(二叉树路径和)

112. Path Sum ,113. Path Sum II,437. Path Sum III, leetcode解题之112 & 113 & 437. Path Sum java版(二叉树路径和...

【LeetCode-面试算法经典-Java实现】【113-Path Sum II(路径和)】

【113-Path Sum II(路径和II)】【LeetCode-面试算法经典-Java实现】【所有题目目录索引】原题  Given a binary tree and a sum, find al...

LeetCode 112 — Path Sum(C++ Java Python)

题目: 题目翻译: 分析: C++实现: Java实现: Python实现: 感谢阅读,欢迎评论!

leetcode-124:Binary Tree Maximum Path Sum(Java)

Binary Tree Maximum Path Sum Given a binary tree, find the maximum path sum. The path may st...

leetcode解题之124. Binary Tree Maximum Path Sum Java版 (二叉树的最大路径和)

124. Binary Tree Maximum Path Sum ,leetcode解题之124. Binary Tree Maximum Path Sum Java版 (二叉树的最大路径和)

[leetcode]124. Binary Tree Maximum Path Sum@Java解题报告

https://leetcode.com/problems/binary-tree-maximum-path-sum/discuss/ Given a binary tree, ...
内容举报
返回顶部
收藏助手
不良信息举报
您举报文章:深度学习:神经网络中的前向传播和反向传播算法推导
举报原因:
原因补充:

(最多只允许输入30个字)