1.平衡二叉树
树中的任意一个节点,他的左子树和右子树的高度差不超过1
2. 代码实现
/**
* Definition for a binary tree node.
* public class TreeNode {
* int val;
* TreeNode left;
* TreeNode right;
* TreeNode(int x) { val = x; }
* }
*/
class Solution {
public int maxDepth(TreeNode root){
if(root == null){
return 0;
}
int leftDepth = maxDepth(root.left);
int rightDepth = maxDepth(root.right);
return 1 + (leftDepth > rightDepth? leftDepth : rightDepth);
}
public boolean isBalanced(TreeNode root) {
if(root == null){
return true;
}
int leftDepth = maxDepth(root.left);
int rightDepth = maxDepth(root.right);
if(leftDepth - rightDepth > 1 || rightDepth - leftDepth > 1){
return false;
}
return isBalanced(root.left) && isBalanced(root.right);
}
}
这个思路很好理解
如果是空树,算平衡
如果没有子树,也算平衡
求一下左右子树的高度,判断一下差值是否小于1,不满足return false
递归判定左子树右子树是不是也是平衡