/**
* Runtime: 0 ms, faster than 100.00%
* Memory Usage: 39.1 MB, less than 52.72%
*/
class Solution {
public int diameterOfBinaryTree(TreeNode root) {
int[] max = new int[1];
depth(root, max);
return max[0];
}
private int depth(TreeNode root, int[] max) {
if (root == null) {
return -1;
}
int leftDepth = depth(root.left, max);
int rightDepth = depth(root.right, max);
max[0] = Math.max(max[0], leftDepth + rightDepth + 2); // update the biggest diameter rooted in current node
return Math.max(leftDepth, rightDepth) + 1;
}
}
/**
* 同上的做法,这个把max作为全局变量,不使用数组
* Runtime: 0 ms, faster than 100.00%
* Memory Usage: 38.8 MB, less than 82.57%
*/
class Solution {
int max = 0;
public int diameterOfBinaryTree(TreeNode root) {
depth(root);
return max;
}
private int depth(TreeNode root) {
if (root == null) {
return -1;
}
int leftDepth = depth(root.left);
int rightDepth = depth(root.right);
max = Math.max(max, leftDepth + rightDepth + 2); // update the biggest diameter rooted in current node
return Math.max(leftDepth, rightDepth) + 1;
}
}
543. Diameter of Binary Tree [Easy]
最新推荐文章于 2024-05-31 17:17:25 发布