平衡二叉树

问题陈述

输入一棵二叉树的根节点,判断该树是不是平衡二叉树。如果某二叉树中任意节点的左右子树的深度相差不超过1,那么它就是一棵平衡二叉树。

思路分析

深度遍历每个结点,判断其左右子树高度之差是否<=1。

代码实现

1
2
3
4
5
6
7
8
9
10
class Solution{
public boolean isBalanced(TreeNode root){
if(root==null) return true;
return Math.abs(deepth(root.left)-deepth(root.right))<=1&&isBalanced(root.left)&&isBalanced(root.right);
}
public int deepth(TreeNode root){
if(root==null) return 0;
return Math.max(deepth(root.left),deepth(root.right))+1;
}
}