如题,本文主要分享的是如何遍历二叉树所有的叶子节点到根节点的路径,遍历出路径之后自然可以进行查找最长路径和最短路径,接下来我们以一棵二叉树作为案例进行分享
按照上面这个二叉树,我们遍历出来的路径应该有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)