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

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

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

class Solution {
private:
    bool DFS(TreeNode* root, int sum) {
        bool flag1 = false,flag2 = false;//flag表示此路两分支(左右孩子)是否被占领,一开始都未被占领
        if(!root->left&&!root->right&&sum==0)return true;//如果是叶子结点,且能量耗尽,即可占领
        if(root->left)flag1 = DFS(root->left, sum - root->left->val);//看左子树有没有被占领
        if(root->right)flag2 = DFS(root->right, sum - root->right->val);//看右子树有没有被占领
        return flag1 || flag2;//若有孩子被占领,父结点也必被占领,想象一下物理上必然要通过父结点
    }

  public:
    bool hasPathSum(TreeNode* root, int sum) {
        //把sum理解为能量,到达某点时,要消耗对应的能量。所以题目=>占领某条路用尽所有能量
        if (!root)return false;//如果根结点为空,直接不行。
        sum = sum - root->val;//首先要站在根结点上,消耗对应能量
        return DFS(root, sum);//用相应的能量走剩下的路
    }
};

全部评论

相关推荐

炫哥_:哥们项目描述里面vector和mysql之类的都要写吗,直接开头技术栈巴拉巴拉就行了,完全不是技术点啊
点赞 评论 收藏
分享
那一天的Java_Java起来:他本来公司就是做这个的,不就是正常的游戏客户端和服务器开发,软硬件联动,有啥恶心不恶心的,提前告诉你就是怕你接受不了,接受不了就没必要再往后走流程浪费时间,虽然这公司是一坨。
点赞 评论 收藏
分享
不愿透露姓名的神秘牛友
06-18 17:37
点赞 评论 收藏
分享
评论
点赞
收藏
分享

创作者周榜

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