leetcode112题 题解 翻译 C语言版 Python版
2016-04-19 15:05
169 查看
112. 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.
112.路径和
给定一棵二叉树和一个和,确定这棵树是否有一个从根到叶的路径使得路径上结点值加起来等于这个给定的和。
例如:
给定下面这棵二叉树并且给定和sum=22
5
/ \
4 8
/ / \
11 13 4
/ \ \
7 2 1
返回true,因为存在这么条路径5->4->11->2且其和为22
思路:这题用递归很方便就能解决。如果当前是叶结点,那么只需要判断sum是否等于当前叶结点的值。如果当前不是叶节点,那么我用sum减去当前结点的值,然后递归地去判断两棵子树有没有可以满足这个值的。只要有一棵子树能满足,那么层层返回,最后就能满足。
/**
* Definition for a binary tree node.
* struct TreeNode {
* int val;
* struct TreeNode *left;
* struct TreeNode *right;
* };
*/
bool hasPathSum(struct TreeNode* root, int sum) {
if (!root) return false;
if (!root->left && !root->right) return root->val == sum;
bool flagl = false, flagr = false;
if (root->left) flagl = hasPathSum(root->left, sum - root->val);
if (root->right) flagr = hasPathSum(root->right, sum - root->val);
return flagl || flagr;
}
# Definition for a binary tree node.
# class TreeNode(object):
# def __init__(self, x):
# self.val = x
# self.left = None
# self.right = None
class Solution(object):
def hasPathSum(self, root, sum):
"""
:type root: TreeNode
:type sum: int
:rtype: bool
"""
if not root: return False
if not (root.left or root.right): return root.val == sum
flagl, flagr = False, False
if root.left: flagl = self.hasPathSum(root.left, sum - root.val)
if root.right: flagr = self.hasPathSum(root.right, sum - root.val)
return flagl or flagr
相关文章推荐
- 初学遗传算法解决tsp问题(C++)
- 先贴出代码C++ 中的单例模式
- 巩固C语言(十一)----文件的数据处理
- C++读书笔记(持续更新)
- 奇数偶数序列
- C语言中的找特殊数字问题
- 控制符endl与换行符'\n'的区别
- 第4周 C语言及程序设计提高例程-4 函数的返回值
- 关于C/C++中的inline
- C++ 类的三种构造函数(默认构造,拷贝构造,赋值构造),在什么情况下会被调用
- 谈谈基类与子类的this指针(C++)
- [c++]非局部静态对象初始化顺序
- 语法错误 : 缺少“;”(在“类型”的前面)
- 详解C++中的const关键字及与C语言中const的区别
- 用C++使用Android Log API输出日志
- c语言中的break和continue
- C++隐藏规则
- C语言之字符串的表示方式
- protobuf c++ api 简介
- 用1元,2元,5元,10元,20元,50元组合成100元