剑指 Offer-JZ24-二叉树中和为某一值的路径

题目描述

输入一颗二叉树的根节点和一个整数,按字典序打印出二叉树中结点值的和为输入整数的所有路径。路径定义为从树的根结点开始往下一直到叶结点所经过的结点形成一条路径。

解题思路

见代码

代码实现

/*
struct TreeNode {
	int val;
	struct TreeNode *left;
	struct TreeNode *right;
	TreeNode(int x) :
			val(x), left(NULL), right(NULL) {
	}
};*/
class Solution {
private:
    vector<vector<int>> paths;
    vector<int> path;

public:
    vector<vector<int> > FindPath(TreeNode* root,int expectNumber) {
        if(root == NULL)
            return paths;
        
        path.push_back(root->val);
        expectNumber -= root->val;
        if(expectNumber == 0 && root->left == NULL && root->right == NULL)
            paths.push_back(path);
        FindPath(root->left, expectNumber);
        FindPath(root->right, expectNumber);
        path.pop_back();
        
        return paths;
    }
};

运行结果

运行时间:4ms
占用内存:380k

你可能感兴趣的:(剑指offer)