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

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

http://www.nowcoder.com/practice/b736e784e3e34731af99065031301bca

/*
struct TreeNode {
	int val;
	struct TreeNode *left;
	struct TreeNode *right;
	TreeNode(int x) :
			val(x), left(NULL), right(NULL) {
	}
};*/
class Solution {
public:
    vector<vector<int> > paths;
    
    void trace(TreeNode *root, vector<int> &path, int remain) {
        if (root->left == nullptr && root->right == nullptr) {
            if (remain == root->val) {    //等于期望值加入路径
                path.push_back(root->val);
                paths.push_back(path);
                path.pop_back();    //回退
            }
            return;
        }
        
        int val = root->val;

        remain -= val;
        path.push_back(val);

        if (root->left) trace(root->left, path, remain);    //遍历左子树
        if (root->right) trace(root->right, path, remain);    //遍历右子树

        remain += val;    //剩余值和路径均回退
        path.pop_back();
    }
    
    vector<vector<int> > FindPath(TreeNode* root,int expectNumber) {
        vector<int> path;
        
        paths.clear();
        
        if (root) trace(root, path, expectNumber);
        
        return paths;
    }
};
全部评论

相关推荐

七牛云头号黑子:人家是过度包装被看出来没过简历,你是包都不包啊兄弟
点赞 评论 收藏
分享
2025-12-15 14:25
云南大学 Java
lei22:入职可能会看学信网,最好别伪装,这个简历找实习肯定是够的,肯定会有收 28 届实习生的公司的,多投就行
点赞 评论 收藏
分享
评论
点赞
收藏
分享

创作者周榜

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