题目描述
输入一颗二叉树的跟节点和一个整数,打印出二叉树中结点值的和为输入整数的所有路径。路径定义为从树的根结点开始往下一直到叶结点所经过的结点形成一条路径。(注意: 在返回值的list中,数组长度大的数组靠前)
python:
class Solution:
def __init__(self):
self.listAll = []
self.list = []
# 返回二维列表,内部每个列表表示找到的路径
def FindPath(self, root, expectNumber):
if root is None:
return self.listAll
self.list.append(root.val)
expectNumber -= root.val
if expectNumber == 0 and root.left is None and root.right is None:
self.listAll.append(self.list)
self.FindPath(root.left, expectNumber)
self.FindPath(root.right, expectNumber)
self.list = self.list[:-1]
return sorted(self.listAll, key=len, reverse=True)
c++(并没有满足数组长度大的数组靠前):
class Solution {
public:
vector<vector<int> > res;
vector<int> temp;
vector<vector<int> > FindPath(TreeNode* root,int expectNumber) {
if(root == NULL){
return res;
}
temp.push_back(root->val);
expectNumber -= root->val;
if(expectNumber==0 && root->left==NULL && root->right==NULL){
res.push_back(temp);
}
FindPath(root->left, expectNumber);
FindPath(root->right, expectNumber);
temp.pop_back();
return res;
}
};