题目
给你一个树,判断是否是平衡二叉树。
平衡二叉树的定义:左右子树的高度相差不大于1
思路
很简单,我们只需要判断如下两点:
- 递归调用判断左右子树的高度是否大于1,如果大于1,则不是平衡二叉树。
- 满足第一点的同时,还需要判断左右子树是否同时也是平衡二叉树。
很简单的一道题,理解树的遍历其实就很容易解决这样的题目了
附上代码
public boolean isBalanced(TreeNode root) {
if(root == null){
return true;
}
int leftHeight = root.left != null ? getHeight(root.left) : 0;
int rightHeight = root.right != null ? getHeight(root.right) : 0;
if(Math.abs(leftHeight - rightHeight) > 1){
return false;
}
return isBalanced(root.left) && isBalanced(root.right);
}
// 获取高度
private int getHeight(TreeNode root){
if(root.left != null || root.right != null){
int left = 0;
if(root.left != null) {
left = getHeight(root.left) + 1;
}
int right = 0;
if(root.right != null) {
right = getHeight(root.right) + 1;
}
return Math.max(left,right);
}
return 1;
}