#include <iostream>
#include <algorithm>
#include <cstdlib>
#include <vector>
using namespace std;
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> > FindPath(TreeNode* root,int expectNumber) {
vector<int> Path;
vector<vector<int> > Result;
FindPath(root, expectNumber, &Path, &Result);
return Result;
}
void FindPath(TreeNode* root, int expectNumber, vector<int>* Path, vector<vector<int> >* Result) {
if (root == NULL) {
return;
}
Path->push_back(root->val);
if (root->left == NULL && root->right == NULL) {
int result = 0;
for (vector<int>::iterator it = Path->begin(); it != Path->end(); it++) {
result += *it;
}
if (result == expectNumber) {
Result->push_back(*Path);
}
Path->erase(Path->end() - 1);
return;
}
FindPath(root->left, expectNumber, Path, Result);
FindPath(root->right, expectNumber, Path, Result);
Path->erase(Path->end() - 1);
return;
}
};
int main(void)
{
Solution s;
TreeNode p0(10), p1(5), p2(12), p3(4), p4(7);
p0.left = &p1;
p0.right = &p2;
p1.left = &p3;
p1.right = &p4;
vector<vector<int> > result;
result = s.FindPath(&p0, 22);
return 0;
}
寻找二叉树中长度为k的路径(根节点到叶子节点)
最新推荐文章于 2023-01-14 20:41:10 发布