4.在二元树中找出和为某一值的所有路径
题目:输入一个整数和一棵二元树。
从树的根结点开始往下访问一直到叶结点所经过的所有结点形成一条路径。
打印出和与输入整数相等的所有路径。
例如输入整数22 和如下二元树
10
/ \
5 12
/ \
4 7
则打印出两条路径:10, 12 和10, 5, 7。
算法分析:
使用回溯法,类似于八皇后问题中的探查。使用栈保存路径。
从根节点遍历树,如果是候选结点,加入栈中,如果是到查到叶子结点,查看是否是一个合适的路径,打印路径。
如果不是叶子结点,按顺序探测它的左子树,右子树,探测完,无论结构与否,候选结点出栈。
所谓的候选结点:当前结点所在路径的总和小于或等于输入的整数值。
核心函数:ProbeTreePath
代码:
{CSDN:CODE:304434}
结果:
结果: