首页 > 其他 > 详细

Leetcode dfs Path Sum

时间:2014-08-31 21:33:41      阅读:150      评论:0      收藏:0      [点我收藏+]

Path Sum

 Total Accepted: 20393 Total Submissions: 66674My Submissions

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.



题意:给定一棵二叉树和一个值,判断在二叉树中是否存在一条从根到叶子的路径使得路径中的节点的总值
等于给定值
思路:dfs
复杂度:时间O(n) --》因为最差情况下要遍历每个节点,空间O(logn) -->因为树的高度是 log n,最多压栈存储 log n 个前面的递归调用的信息


struct TreeNode {
 int val;
 TreeNode *left;
 TreeNode *right;
 TreeNode(int x) : val(x), left(NULL), right(NULL) {}
};


bool hasPathSum(TreeNode *root, int sum){
	if(!root) return false;
	if(root->val == sum && (!root->left  && !root->right)) return true;
	return hasPathSum(root->left, sum - root->val) || hasPathSum(root->right, sum - root->val);
}


Leetcode dfs Path Sum

原文:http://blog.csdn.net/zhengsenlie/article/details/38962745

(0)
(0)
   
举报
评论 一句话评论(0
关于我们 - 联系我们 - 留言反馈 - 联系我们:wmxa8@hotmail.com
© 2014 bubuko.com 版权所有
打开技术之扣,分享程序人生!