码迷,mamicode.com
首页 > 其他好文 > 详细

OJ练习27——T112 Path Sum

时间:2015-04-24 10:30:39      阅读:131      评论:0      收藏:0      [点我收藏+]

标签:

二叉树中是否存在一条路径(从根节点到叶节点)的和等于给定值。

【思路】

1.想到用栈深度遍历,不会实现。

2.递归,每个节点自身的值,加上左子树或右子树等于给定值吗?

【other code】

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

【评价】

递归好像是万能的!能把问题变得这么简单。

把根节点当做只有一个左节点和一个右节点,在最简单情况下执行算法,然后再递归左和右子树。

return PathSum(root->left,sum,val) || PathSum(root->right,sum,val);这句话是核心。

左子树不行,就右子树。

OJ练习27——T112 Path Sum

标签:

原文地址:http://www.cnblogs.com/ketchups-notes/p/4452650.html

(0)
(0)
   
举报
评论 一句话评论(0
登录后才能评论!
© 2014 mamicode.com 版权所有  联系我们:gaon5@hotmail.com
迷上了代码!