在二元树中找出和为某一值的所有路径
2017-01-14 12:47
417 查看
输入一个整数和一棵二元树。
从树的根结点开始往下访问一直到叶结点所经过的所有结点形成一条路径。
打印出和与输入整数相等的所有路径。
void help(int k, int cur, TNode* head, vector<int> vct) {
if (k <= cur || !head) {
return;
}
if (!head->left && !head->right && cur + head->data == k) {
for (int i = 0; i < vct.size(); ++i) {
cout << vct[i] << ' ';
}
cout << head->data << endl;
} else if (cur + head->data < k) {
if (head->left) {
vct.push_back(head->data);
help(k, cur + head->data, head->left, vct);
vct.pop_back();
}
if (head->right) {
vct.push_back(head->data);
help(k, cur + head->data, head->right, vct);
vct.pop_back();
}
}
}
void findPath(int k, TNode* head) {
vector<int> vct;
help(k, 0, head, vct);
}
从树的根结点开始往下访问一直到叶结点所经过的所有结点形成一条路径。
打印出和与输入整数相等的所有路径。
void help(int k, int cur, TNode* head, vector<int> vct) {
if (k <= cur || !head) {
return;
}
if (!head->left && !head->right && cur + head->data == k) {
for (int i = 0; i < vct.size(); ++i) {
cout << vct[i] << ' ';
}
cout << head->data << endl;
} else if (cur + head->data < k) {
if (head->left) {
vct.push_back(head->data);
help(k, cur + head->data, head->left, vct);
vct.pop_back();
}
if (head->right) {
vct.push_back(head->data);
help(k, cur + head->data, head->right, vct);
vct.pop_back();
}
}
}
void findPath(int k, TNode* head) {
vector<int> vct;
help(k, 0, head, vct);
}
相关文章推荐
- 数据结构:题目(2)在二元树中找出和为某一值的所有路径(树)
- flag2在二元树中找出和为某一值的所有路径 题目:输入一个整数和一棵二元树。 从树的根结点开始往下访问一直到叶结点所经过的所有结点形成一条路径。 打印出和与输入整数相等的所有路径。 例如 输入整数
- (四)在二元树中找出和为某一值的所有路径
- 数据结构面试题1.2.5-在二元树中找出和为某一值的所有路径
- 在二元树中找出和为某一值的所有路径
- 微软100题第4题(在二元树中找出和为某一值的所有路径)
- 4.在二元树中找出和为某一值的所有路径(树)
- 【编程题目】在二元树中找出和为某一值的所有路径(树)
- 微软算法100道题------在二元树中找出和为某一值的所有路径
- 在二元树中找出和为某一值的所有路径
- .在二元树中找出和为某一值的所有路径
- 在二元树中找出和为某一值的所有路径
- 在二元树中找出和为某一值的所有路径(树)
- 面试100题004--二元树中找出和为某一值的所有路径
- No4、在二元树中找出和为某一值的所有路径(树)
- [编程之美-12]在二元树中找出和为某一值的所有路径
- 4.在二元树中找出和为某一值的所有路径
- 每天三道冲刺工作--在二元树中找出和为某一值的所有路径
- 在二元树中找出和为某一值的所有路径
- 100题_04 在二元树中找出和为某一值的所有路径