题目:
110.Balanced Binary Tree(easy)
题目大意:
给定一个二叉树,判断其是不是平衡二叉树。
一棵高度平衡二叉树定义为:一个二叉树每个节点 的左右两个子树的高度差的绝对值不超过1。
(每个节点的左右两个子树的高度差绝对值不超过1)
解题思路:
使用递归,先求出左右子树的高度,利用定义去求。这种方法是自顶向下的递归。
还有一种自底向上的递归,暂时没有想到写法。
注意:空树也是平衡二叉树。
代码:1
2
3
4
5
6
7
8
9
10
11
12
13
14Java:
public boolean isBalanced(TreeNode root){
if(root == null) return true;
return Math.abs(getHeight(root.left) - getHeight(root.right)) < 2
&& isBalanced(root.left)
&& isBalanced(root.right);
}
private int getHeight(TreeNode root){
if(root == null) return 0;
return Math.max(getHeight(root.left),getHeight(root.right)) + 1;
}
Python: