您的位置:首页 > 其它

寻找二叉树中和为固定值的从根节点到叶节点的所有路径

2011-05-20 20:55 525 查看
题目:输入一个整数和一棵二元树。

从树的根结点开始往下访问一直到叶结点所经过的所有结点形成一条路径。

打印出和与输入整数相等的所有路径。

例如 输入整数22和如下二元树

10

/ /

5 12

/ /

4 7

则打印出两条路径:10, 12和10, 5, 7。

struct BinaryTreeNode {
BinaryTreeNode(int d = -1): data(d), left(0), right(0) {}
int data;
BinaryTreeNode *left, *right;
};
struct BinaryTree {
BinaryTree(BinaryTreeNode *r = 0):root(r) {}
void PrintAllPath(BinaryTreeNode *r, int sum);
BinaryTreeNode *root;
deque<int> path;
};
void BinaryTree::PrintAllPath(BinaryTreeNode *r, int sum) {
if(r) {
if(r->left == NULL || r->right == NULL) {
if(sum == r->data) {
for(int i = 0; i < path.size(); ++i)
cout << path.at(i) << " ";
cout << r->data << endl;
}
} else {
if(r->data > sum)
return;
path.push_back(r->data);
PrintAllPath(r->left, sum - r->data);
PrintAllPath(r->right, sum - r->data);
path.pop_back();
}
}
}
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: 
相关文章推荐