【Leetcode】543. Diameter of Binary Tree
思路:
定义一个类变量diameter,保存最大diameter值。
通过递归计算左右子树的深度来计算根节点的diameter(记为temp),通过和类变量 diameter 进行比较,保存较大值。
在每一次递归结束后,返回左右子树的深度,将二者相加再加2就是根节点的diameter。
/**
* Definition for a binary tree node.
* public class TreeNode {
* int val;
* TreeNode left;
* TreeNode right;
* TreeNode(int x) { val = x; }
* }
*/
public class Solution {
int diameter = 0;
public int diameterOfBinaryTree(TreeNode root) {
getDepth(root);
return diameter;
}
public int getDepth(TreeNode root){
if (root == null)
return -1;
int left = getDepth(root.left);
int right = getDepth(root.right);
int temp = left + right + 2;
if (temp > diameter)
diameter = temp;
return Math.max(left, right) + 1;
}
}
Runtime:10ms
还没有评论,来说两句吧...