微软面试一百题之4在二叉树中找出和为某一值的所有路径

4.在二元树中找出和为某一值的所有路径
题目:输入一个整数和一棵二元树。
从树的根结点开始往下访问一直到叶结点所经过的所有结点形成一条路径。
打印出和与输入整数相等的所有路径。
例如输入整数22 和如下二元树
10
/ \
5 12
/ \
4 7
则打印出两条路径:10, 12 和10, 5, 7。


算法分析:

使用回溯法,类似于八皇后问题中的探查。使用栈保存路径。

从根节点遍历树,如果是候选结点,加入栈中,如果是到查到叶子结点,查看是否是一个合适的路径,打印路径。

如果不是叶子结点,按顺序探测它的左子树,右子树,探测完,无论结构与否,候选结点出栈。


所谓的候选结点:当前结点所在路径的总和小于或等于输入的整数值。


核心函数:ProbeTreePath


代码:

{CSDN:CODE:304434}

结果:


  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值