NC9 二叉树中是否存在节点和为指定值的路径
情景提要
牛客题解系列,按照题号顺序开始。
NC9 二叉树中是否存在节点和为指定值的路径
01
题目描述
02
输入输出示例
输入:
{1,2} 0
输出:
false
03
题目分析
思路
本题和NC5,NC9 是相似的,依然是递归和迭代两种方法都可以做,只需要改变一下计算和的方式就可以了。本题是将每个节点的值加起来,之前的题是将节点上的数字组成一个新的数。本题是返回bool类型,表示是否存在。之前的题是返回数组,表示具体的路径。这就是和之前两道题的小区别。
03
代码实现
方法
/*** struct TreeNode {* int val;* struct TreeNode *left;* struct TreeNode *right;* };*/class Solution {public:/**** @param root TreeNode类* @param sum int整型* @return bool布尔型*/bool hasPathSum(TreeNode* root, int sum) {// write code hereif(!root) return false;return travel(root,sum);}bool travel(TreeNode* node,int sum){if(!node->left && !node->right) {if(node->val == sum) return true;return false;}bool l = false;bool r = false;if(node->left) {node->left->val += node->val;l = travel(node->left, sum);}if(node->right) {node->right->val += node->val;r = travel(node->right, sum);}return l || r;}};
04
总结
要注意一些边界条件,结点为空的考虑。
换汤不换药。又是一道相似题。
欢迎评论区留言讨论哦
