- 问题描述
判断一个树是否为平衡树 - 解决思路
1> 如果树为空, 返回 true
2> 如果树不为空,
求左右子树高度之差 sub,
如果 sub 的绝对值大于 1, 说明不是平衡树, 返回 false.
否则判断左子树和右子树是否都为平衡树
求树的深度详细讲解请点击 链接: link. - 源代码
class Solution {
public int getHeight(TreeNode root) {
if (root == null) {
return 0;
}
return Math.max(getHeight(root.left), getHeight(root.right)) + 1;
}
public boolean isBalanced(TreeNode root) {
if (root == null) {
return true;
}
int leftHeight = getHeight(root.left);
int rightHeight = getHeight(root.right);
int sub = leftHeight - rightHeight;
if (!(sub == -1 || sub == 1 || sub == 0)) {
return false;
}
return isBalanced(root.left) && isBalanced(root.right);
}
}