java求出遍历二叉树的路径,Java算法之求二叉树的所有路径

如题,本文主要分享的是如何遍历二叉树所有的叶子节点到根节点的路径,遍历出路径之后自然可以进行查找最长路径和最短路径,接下来我们以一棵二叉树作为案例进行分享

3ff76a27a435d9c22cdfa363f922e841.png

按照上面这个二叉树,我们遍历出来的路径应该有5条(有几个叶子节点就有几条),它们分别是(1,2,4,7) , (1,2,4,8,9) , (1,2,5,10) , (1,2,5,11) , (1,3,6)

那么我们该如何实现呢,首先肯定是通过递归来实现。这里我们分两步

1.采用先根遍历,每遍历一个节点就将它放在一个List里面存起来,然后如果它是叶子节点,则将当前的List作为一条路径存在路径集合里面,之后将该叶子节点从当前路径里面删除,拿(1,2,4,7)这条路径举例,当我们遍历到7的时候,7是叶子节点,所以我们将(1,2,4,7)这条路径存到路径集合里了,接下来按照根左右遍历应该遍历8,所以我们应该讲7从当前的路径里面删除,这样在遍历到8的时候才会是(1,2,4,8)这样一条正确的路径。

2.当遍历到右边节点的时候,只取出当前节点父节点即其父节点(该节点上面的所有节点,比如遍历到5的时候,取出1,2),然后用这条路径更新当前路径

代码如下,大家可以结合注释看

public class BinaryTreeRoutTest {

public static void main(String[] args)

  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值