首先分析讨论有多少种情况,最常见的以是否和头结点有关进行划分
1)和头结点无关,说明不经过头结点,所以可分为如下两种情况:
1. 左子树的最大距离
2. 右子树的最大距离
2)和头节点有关,那么就是左子树离自己最远的点加上自己加上右子树离自己最远的点:
左子树的高度+右子树的高度+1
所以分析好代码就很简单了,上代码
public class TreeMaxDistance {
public static void main(String[] args) {
}