版权声明:本文为博主原创文章,遵循 CC 4.0 BY-SA 版权协议,转载请附上原文出处链接和本声明。
前提须知:
实现代码(转载):
原版在以上链接的片末。
package com.bjsxt.test;
/**
* 二叉树任意两个节点的最大距离
*/
public class MaxDistOfBiTree {
public int lm=0,rm=0,max=0;
public int getMax() {
return max;
}
public int maxDist(Node root) {
//如果树是空的,则返回0
if(root == null)
return 0;
if(root.left != null) {
lm = maxDist(root.left)+1;
}
if(root.right != null)
rm = maxDist(root.right);
//如果以该节点为根的子树中有最大的距离,那就更新最大距离
int sum = rm + lm;
if(sum > max) {
max = sum;
}
return rm > lm ?rm : lm;
}
}
测试代码块:
package com.bjsxt.test;
import java.util.Iterator;
import java.util.List;
/**
* 以int类型为节点值,进行关于二叉树相关算法设计的测试
*/
public class Test {
public static void main(String[] args) {
//测试--打印二叉树每层的节点
BiTreeTraversing tree = new BiTreeTraversing();
tree.getResult();
Node root=tree.getPack().get(0);//整棵树的根节点
//测试--二叉树任意两个节点之间路径的最大长度
MaxDistOfBiTree Dist= new MaxDistOfBiTree();
Dist.maxDist(root);
System.out.println("最大长度:"+Dist.getMax());
}
}
测试结果:
最大长度: 6