LeetCode Path Sum 判断树的路径之和
2014-11-08 21:36
351 查看
/** * Definition for binary tree * struct TreeNode { * int val; * TreeNode *left; * TreeNode *right; * TreeNode(int x) : val(x), left(NULL), right(NULL) {} * }; */ class Solution { public: bool hasPathSum(TreeNode *root, int sum) { if(root==0) //针对根结点,非根节点不应会执行到这里 return false; if( root->left==0 && root->right==0 ) //是叶子结点,且刚好将sum变为0 return root->val==sum ? true : false ; if( ( root->left!=0 && hasPathSum( root->left , sum-root->val) ) || ( root->right!=0 && hasPathSum( root->right , sum-root->val ) ) )//判断左叉或右叉中是否有一条从上往下满足要求的路径 return true; return false; } };
这次终于感觉代码够简洁的了。哈哈
题意是:有没有一条这样一条路径,从根开始到叶子结点上的值之和为所提供的数字。
本来挺不愿意用递归的,递归很有局限性,但用起来又特别爽。像此题,想半个小时没想到怎么设计算法会快一点。如果有非递归算法,且是较好的代码,请不吝分享一下吧!
解题需考虑的是:
1.根结点为空
2.递归到叶子结点了,要设计其作为递归出口
3.非叶子结点要解决sum的问题。只要左子树或者右子树中有一条路径满足要求,那么就判断结束。
相关文章推荐
- [LeetCode]112. Path Sum(判断二叉树根到叶路径和是否等于sum)
- [LeetCode] Path Sum 二叉树的路径和
- [LeetCode] 路径和 Path Sum
- LeetCode 64. Minimum Path Sum 二维路线最短路径
- 【二叉树的递归】03判断二叉树中有没有和为给定值的路径【Path Sum】
- 【LeetCode】Judge Route Circle 判断路径是否成环
- LeetCode 64. Minimum Path Sum(最小和的路径)
- 【LeetCode】Path Sum 2 --java 二叉数 深度遍历,保存路径
- Leetcode 64. Minimum Path Sum 最小路径和 解题报告
- [LeetCode] Path Sum 求二叉树中满足要求的路径
- 112. Path Sum (判断路径和是否等于某值)
- leetcode_112. Path Sum 二叉树路径求和,判断是否存在路径和为某个值的路径,深度遍历,递归的return
- 【leetcode 二叉树路径和】Path Sum 和 Path Sum II
- leetcode Path Sum 路径和
- LeetCode 64. Minimum Path Sum(最小路径和)
- [Leetcode] Path Sum路径和
- [LeetCode] 64. Minimum Path Sum 最小路径和
- [LeetCode] Path Sum 求二叉树中满足要求的路径
- leetcode 64. Minimum Path Sum-最小路径和|动态规划
- [leetcode] Path sum路径之和