题解 | #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;
    }
};
全部评论

相关推荐

05-12 11:09
已编辑
门头沟学院 后端
已注销:没必要放这么多专业技能的描述。这些应该是默认已会的,写这么多行感觉在凑内容。项目这块感觉再包装包装吧,换个名字,虽然大家的项目基本都是网上套壳的,但是你这也太明显了。放一个业务项目,再放一个技术项目。技术项目,例如中间件的一些扩展和尝试。
简历中的项目经历要怎么写
点赞 评论 收藏
分享
评论
点赞
收藏
分享

创作者周榜

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