
/**
直径:以某点为基准 其左子树最大深度+右子树最大深度
该二叉树直径: 所有直径中最长的一个
计算每个节点的左右子树最大深度,顺带计算直径即可
*/
/**
* Definition for a binary tree node.
* public class TreeNode {
* int val;
* TreeNode left;
* TreeNode right;
* TreeNode() {}
* TreeNode(int val) { this.val = val; }
* TreeNode(int val, TreeNode left, TreeNode right) {
* this.val = val;
* this.left = left;
* this.right = right;
* }
* }
*/
class Solution {
private int maxDiameter = 0; // 记录最大直径
public int diameterOfBinaryTree(TreeNode root) {
/**
直径:以某点为基准 其左子树最大深度+右子树最大深度
该二叉树直径: 所有直径中最长的一个
计算每个节点的左右子树最大深度,顺带计算直径即可
*/
maxDepth(root);
return maxDiameter;
}
private int maxDepth(TreeNode root) {
if(root == null) {
return 0;
}
int leftDepth = maxDepth(root.left); //左子树最大深度
int rightDepth = maxDepth(root.right); //右子树最大深度
//更新最长直径
maxDiameter = Math.max(maxDiameter,leftDepth + rightDepth);
return Math.max(leftDepth,rightDepth) + 1; //计算当前节点最大深度
}
}
1254

被折叠的 条评论
为什么被折叠?



