文章标题

PATH SUM
本题目考察二叉树的基本操作,在一颗普通二叉树中查找从根节点到叶子节点的完整路径使得这条路径上的所有元素的值之和等于所给定的sum,几所所谓的PATH SUM问题。
本题目7行代码就搞定了,看似没什么难度,但也确确实实是对二叉树的基本操作的很好的考察,二叉树的遍历一定要有递归的思想,不然你一定会很头疼这个遍历的过程,往往让解题变得无从下手。
总结一下本题目思路如下:
1.判断该节点是不是根节点。
2.比较根节点元素值是否与sum相等,若相等则返回true,若不相等则进入递归。
3.对左子树和右子树分别递归,并返回haspathsum。
4.完成遍历之后若还没找到path那么返回false。

``
/**
* Definition for binary tree
* struct TreeNode {
* int val;
* struct TreeNode *left;
* struct TreeNode *right;
* };
*/
bool hasPathSum(struct TreeNode *root, int sum) {
if(root) //判断该节点是否为根节点
{
//sum+=root->val;
if(sum-root->val==0&&root->left==NULL&&root->right==NULL) //判断根节点元素值是否和sum相等
return true;
else return hasPathSum(root->left,sum-root->val)||hasPathSum(root->right,sum-root->val); //进入左右子树分别递归
}
return false;
}
这里写代码片`

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值