@XQF
2018-03-07T23:00:52.000000Z
字数 807
阅读 811
数据结构与算法
问题描述:结点的距离是指这两个点之间的边的个数
先找到左子树中离根最远的,再找到右子树中离根最远的。加起来就OK了。
class TreeNode {
int data;
TreeNode left;
TreeNode right;
int leftMaxDis;
int rightMaxDis;
public TreeNode(int data) {
this.data = data;
this.left = null;
this.right = null;
}
}
class BinaryTree {
private int maxLen = 0;
public void findMaxDis(TreeNode root) {
if (root == null) {
return;
}
if (root.left == null) {
root.leftMaxDis = 0;
}
if (root.right == null) {
root.rightMaxDis = 0;
}
if (root.left != null) {
findMaxDis(root.left);
}
if (root.right != null) {
findMaxDis(root.right);
}
if (root.left != null) {
root.leftMaxDis = Math.max(root.left.leftMaxDis, root.left.rightMaxDis) + 1;
}
if (root.right != null) {
root.rightMaxDis = Math.max(root.right.leftMaxDis, root.right.rightMaxDis) + 1;
}
int temp = root.leftMaxDis + root.rightMaxDis;
if (temp > maxLen) {
maxLen = temp;
}
}
}
public class Solution {
public static void main(String[] args) {
}
}