题目传送:https://leetcode.cn/problems/balanced-binary-tree/
运行效率
代码如下:
class Solution {
public boolean isBalanced(TreeNode root) {
//处理特殊情况
//处理边界情况
if (root == null) {
return true;
}
//1、首先要确保左右子树的高度差不能超过1
//获取左子树的高度
int leftHeight = getHeight(root.left);
//获取右子树的高度
int rightHeight = getHeight(root.right);
if (Math.abs(leftHeight - rightHeight) > 1) {
return false;
}
//递归去判断左右两个子树都平衡
boolean leftBalanced = isBalanced(root.left);
boolean rightBalanced = isBalanced(root.right);
return leftBalanced && rightBalanced;
}
/**
* 获取树的高度
*
* @param root
* @return
*/
public int getHeight(TreeNode root) {
//处理边界情况
if (root == null) {
return 0;
}
if (root.left == null && root.right == null) {
return 1;
}
//获取左子树的高度
int leftHeight = getHeight(root.left);
//获取右子树的高度
int rightHeight = getHeight(root.right);
return Math.max(leftHeight, rightHeight) + 1;
}
}