给定一棵二叉树,你需要计算它的直径长度。一棵二叉树的直径长度是任意两个结点路径长度中的最大值。这条路径可能穿过也可能不穿过根结点
class TreeNode543 {
int val;
TreeNode543 left;
TreeNode543 right;
TreeNode543() {}
TreeNode543(int val) { this.val = val; }
TreeNode543(int val, TreeNode543 left, TreeNode543 right) {
this.val = val;
this.left = left;
this.right = right;
}
}
class Solution543 {
int max_re = 0;
public int diameterOfBinaryTree(TreeNode543 root) {
if(root == null){
return 0;
}
int[] max_deep =new int[3];
dfs(root);
return max_re;
}
int dfs(TreeNode543 root){
if(root == null){
return 0;
}
int r_deep = 0;
int l_deep = 0;
r_deep = dfs(root.left);
l_deep = dfs(root.right);
int max_deep = Math.max(r_deep,l_deep)+1;
if (r_deep+l_deep>max_re){
max_re = r_deep+l_deep;
}
return max_deep;
}
}
public class leecode543 {
public static void main(String[] args) {
TreeNode543 a = new TreeNode543(1);
TreeNode543 b = new TreeNode543(2);
TreeNode543 c = new TreeNode543(3);
TreeNode543 d = new TreeNode543(4);
TreeNode543 e = new TreeNode543(5);
TreeNode543 f = new TreeNode543(6);
TreeNode543 g = new TreeNode543(7);
a.left = b;
a.right = c;
b.left = d;
b.right = e;
Solution543 solution543 =new Solution543();
System.out.println(solution543.diameterOfBinaryTree(a));
}
}