题目传送:​​https://leetcode.cn/problems/balanced-binary-tree/​

运行效率

Leetcode110. 平衡二叉树_leetcode


代码如下:

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;
}
}