@XQF
2018-03-07T15:00:52.000000Z
字数 807
阅读 950
数据结构与算法
问题描述:结点的距离是指这两个点之间的边的个数
先找到左子树中离根最远的,再找到右子树中离根最远的。加起来就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) {}}
