问题描述:结点的距离是指这两个结点之间边的个数。
算法思想:递归。首先,求左子树距根结点的最大距离,记为leftMaxDistance;其次,求右子树距根结点的最大距离,记为rightMaxDistance,那么二叉树中结点的最大距离maxDistance满足maxDistance=leftMaxDistance+rightMaxDistance。
代码如下:
package com.haobi;
/*
* 求二叉树中结点的最大距离
*/
//定义结点结构
class Node4{
public int data;
public Node4 left;
public Node4 right;
//左子树距离根结点的最大距离
public int leftMaxDistance;
//右子树距离根结点的最大距离
public int rightMaxDistance;
public Node4(int data) {
this.data = data;
this.left = null;
this.right = null;
}
}
public class Test4 {
//定义根结点
private Node4 root;
//构造方法
public Test4() {
root = null;
}
private int maxLen = 0;
private int max(int a, int b) {
return a > b ? a: b;
}
/**
* 递归查找最大距离
* @param root
*/
public void FindMaxDistance(Node4 root) {
if(root == null) {
return;
}
if(root.left == null) {
r