题目描述:
给定一个二叉树,判断它是否是高度平衡的二叉树。本题中,一棵高度平衡二叉树定义为:
一个二叉树每个节点 的左右两个子树的高度差的绝对值不超过1。
思路: 问题划分为判断每个结点的左右子树高度差绝对值不超过 1。即左右子树均为平衡二叉树。
那么分别求出左右子树的高度,然后做差值比较。
class Solution {
public int getHeight(TreeNode root){
if(root == null){
return 0;
}
return Math.max(getHeight(root.left),getHeight(root.right)) + 1;
}
public boolean isBalanced(TreeNode root) {
if(root == null){
return true;
}
if(!isBalanced(root.left)){
return false;
}
if(!isBalanced(root.right)){
return false;
}
int left = getHeight(root.left);
int right = getHeight(root.right);
int diff = left - right;
if(diff >= -1 && diff <= 1){
return true;
}
return false;
}
}