采用自底向上,复杂度为O(n)
getDepth这个方法返回一个数,要么是-1,要么是这个平衡二叉树的深度,最后只要判断不是-1就是平衡二叉树
public class Solution {
public boolean IsBalanced_Solution(TreeNode root) {
return getDepth(root) != -1;
}
private int getDepth(TreeNode root){
if(root == null)
return 0;
int left = getDepth(root.left);
if(left == -1)
return -1;
int right = getDepth(root.right);
if(right == -1)
return -1;
return Math.abs(left-right) > 1?-1:Math.max(left,right)+1;
}
}