`
473687880
  • 浏览: 485320 次
文章分类
社区版块
存档分类
最新评论

Path Sum @LeetCode

 
阅读更多
/**
 * 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.
 */
public class S112 {

	public static void main(String[] args) {
		TreeNode n = new TreeNode(5);
		System.out.println(hasPathSum(n, 5));
	}

	// DFS
	public static boolean hasPathSum(TreeNode root, int sum) {
		if(root == null){
	        return false;
	    }
		
		// 节点值匹配且该节点为叶子节点
		if(root.val == sum && root.left==null && root.right==null){
        	return true;
        }
		// 继续在左子树和右子树中搜索
        return hasPathSum(root.left, sum-root.val) || hasPathSum(root.right, sum-root.val);
    }
	
}

分享到:
评论

相关推荐

Global site tag (gtag.js) - Google Analytics