寻找二叉树中和为固定值的从根节点到叶节点的所有路径
2011-05-20 20:55
525 查看
题目:输入一个整数和一棵二元树。
从树的根结点开始往下访问一直到叶结点所经过的所有结点形成一条路径。
打印出和与输入整数相等的所有路径。
例如 输入整数22和如下二元树
10
/ /
5 12
/ /
4 7
则打印出两条路径:10, 12和10, 5, 7。
从树的根结点开始往下访问一直到叶结点所经过的所有结点形成一条路径。
打印出和与输入整数相等的所有路径。
例如 输入整数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(); } } }
相关文章推荐
- 题目:输入一颗二叉树和一个整数,打印出二叉树中结点值的和为输入整数的所有路径。从树的根节点开始往下一直到叶结点所经过的结点形成一条路径。
- 找出二叉树中和为k的所有路径 Path Sum II
- 求二叉树根节点到子节点和为某一值的所有路径(Java实现)
- 5)二叉树[3]求所有结点到根节点的路径
- Binary Tree Paths:求所有根节点到叶子节点的二叉树路径
- 在二叉树中打印出从某个节点(r)开始和为定值(sum)的所有路径
- 打印二叉树从根节点到叶子节点的所有路径
- 二叉树系列——路径系列:根节点到子节点的路径以及根节点到叶子节点的所有路径
- leetcode Sum Root to Leaf Numbers 二叉树所有叶节点的路径和
- 二叉树中根结点到某节点的路径(求某结点的所有祖先)
- C++之求解二叉树中所有从根节点到叶节点的所有路径(23)---《那些奇怪的算法》
- 微软等数据结构+算法面试100题(21)--二叉树打印到叶子节点的所有路径
- 二叉树基本操作(输出所有叶子节点到根节点的路径)
- 打印二叉树节点数值总和等于某个给定节点的所有路径
- 二叉树的每个节点为0-9的一个数字,根到叶子的一条路径拼成一个数,求所有路径形成的数字和
- 找出二叉树中和最大的路径,路径可以从任意节点开始,到任意节点结束。
- 求二叉树中和为给定值的所有路径
- 找出二叉树所有到叶子节点的路径
- 给定一棵二叉树,二叉树每个节点的值唯一,从根节点开始找出路径上的所有节点的节点值之和等于规定值的路径
- 二叉树中所有的路径(从根节点到叶子结点)