path-sum

来源:互联网 发布:自己网络用语怎么说 编辑:程序博客网 时间:2024/06/10 02:06

题目描述

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 andsum = 22,
5
/ \
4 8
/ / \
11 13 4
/ \ \
7 2 1
return true, as there exist a root-to-leaf path5->4->11->2which sum is 22.

非递归实现

import java.util.LinkedList;public class Solution {    public boolean hasPathSum(TreeNode root, int sum) {        if(root == null) return false;        LinkedList<TreeNode> nodes = new LinkedList<TreeNode>();        LinkedList<Integer> values = new LinkedList<Integer>();        nodes.add(root);        values.add(root.val);        while(!nodes.isEmpty()){            TreeNode curr = nodes.poll();            int curSum = values.poll();            if(curr.left == null && curr.right == null && curSum==sum){//遍历到叶子节点                return true;            }            if(curr.left != null){                nodes.add(curr.left);                values.add(curSum+curr.left.val);            }            if(curr.right != null){                nodes.add(curr.right);                values.add(curSum+curr.right.val);            }        }        return false;    }}

递归实现

public class Solution {    public boolean hasPathSum(TreeNode root, int sum) {        if(root==null)            return false;        if(root.left==null && root.right == null && root.val-sum==0)            return true;        return hasPathSum(root.left,sum-root.val) || hasPathSum(root.right,sum-root.val);    }}
0 0
原创粉丝点击