题解 | #二叉树中和为某一值的路径(一)#递归实现

二叉树中和为某一值的路径(一)

https://www.nowcoder.com/practice/508378c0823c423baa723ce448cbfd0c

/**
 * struct TreeNode {
 *  int val;
 *  struct TreeNode *left;
 *  struct TreeNode *right;
 *  TreeNode(int x) : val(x), left(nullptr), right(nullptr) {}
 * };
 */
#include <cstddef>
class Solution {
  public:
    /**
     * 代码中的类名、方法名、参数名已经指定,请勿修改,直接返回方法规定的值即可
     *
     *
     * @param root TreeNode类
     * @param sum int整型
     * @return bool布尔型
     */
    bool flag = false; //是否成功找到路径
    bool hasPathSum(TreeNode* root, int sum) {
        // write code here
        findPath(root,sum,0); //调用递归函数
        return flag ;
    }
    void findPath(TreeNode* root, int sum, int count) { //当前节点 要求的路径值 当前路径值
      //特殊情况判断  
	  if(root==NULL){
            return;
        }
        if(flag){
            return;
        }
	  //递归出口 路径长度为sum,并且时叶子节点
        if( (count+root->val) == sum && root->left==NULL && root->right==NULL ){
            flag = true; //成功找到路径
            return; 
        }
        if(root->left){ //遍历左孩子
            findPath(root->left, sum, count + root->val);
        }
        if(root->right){ //遍历右孩子
            findPath(root->right,sum, count + root->val);
        }
    }
};

全部评论

相关推荐

不愿透露姓名的神秘牛友
03-19 10:38
实力求职者:真的绷不住了,第一张霸总人设,第二张求生欲拉满
点赞 评论 收藏
分享
牛客100866号技...:把电科加粗,把电科加粗,把电科加粗,两个吊车尾的项目合并成一个,再加一个管理系统。电科✌🏻在成都面中厂手拿把掐
点赞 评论 收藏
分享
评论
点赞
收藏
分享

创作者周榜

更多
牛客网
牛客网在线编程
牛客网题解
牛客企业服务