vlambda博客
学习文章列表

NC9 二叉树中是否存在节点和为指定值的路径

情景提要

    牛客题解系列,按照题号顺序开始。







NC9 二叉树中是否存在节点和为指定值的路径








01




题目描述

NC9 二叉树中是否存在节点和为指定值的路径



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 here if(!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




NC9 二叉树中是否存在节点和为指定值的路径

     要注意一些边界条件,结点为空的考虑。

     换汤不换药。又是一道相似题。

欢迎评论区留言讨论哦