题意:树节点之间距离为,节点A到B的节点数.
思路:
递归 每个节点 求出
1 当前节点的最大距离
2 当前节点高度
这样到下一个节点的时候就有3中可能
1 左节点最大距离最大
2 有节点最大距离最大
3 左节点高度+有节点高度+1 距离最大
最后返回的节点就是最大距离
Node:
扫描二维码关注公众号,回复:
13181073 查看本文章
1 当前节点高度
2 当前节点最大距离
代码:
package 算法.二叉树;
public class test5 {
/**
* 树节点
*/
public static class Node {
//1 当前节点最长
public int maxNodeNum;
//2 当前节高度
public int high;
public int num;
public Node left;
public Node right;
public Node(int maxNodeNum, int high) {
this.maxNodeNum = maxNodeNum;
this.high = high;
}
}
public static Node process(Node node){
if (node == null) {
return new Node(0,0);
}
Node l = process(node.left);
Node r = process(node.right);
//1 当前节点是最长节点
int p1 = l.high+r.high+1;
//2 左是最长
int p2 = l.maxNodeNum;
//3 右边是最长
int p3 = r.maxNodeNum;
node.maxNodeNum = Math.max(p1,Math.max(p2,p3));
//4 高度
node.high = Math.max(l.high,r.high)+1;
return node;
}
public static void main(String[] args) {
process(null);
}
}