给定一个二叉树,判断它是否是高度平衡的二叉树。
本题中,一棵高度平衡二叉树定义为:
一个二叉树每个节点 的左右两个子树的高度差的绝对值不超过1。
示例 1:
给定二叉树 [3,9,20,null,null,15,7]
3
/
9 20
/
15 7
返回 true 。
示例 2:
给定二叉树 [1,2,2,3,3,null,null,4,4]
1
/ \
2 2
/ \
3 3
/
4 4
返回 false 。
通过次数117,289提交次数216,837
在真实的面试中遇到过这道题?
来源:力扣(LeetCode)
链接:https://leetcode-cn.com/problems/balanced-binary-tree
著作权归领扣网络所有。商业转载请联系官方授权,非商业转载请注明出处。
这是一道简单的题,他让我们判断是否有两个子树的绝对深度差超过1,这时我们应该想到递归,方便找出某一个节点两个子树的深度,之后再判断其绝对深度差。
class Solution {
boolean flag=true;
public boolean isBalanced(TreeNode root) {
if(root==null){
return flag;
}
depth(root);
return flag;
}
public int depth(TreeNode root){
if(root==null){
return 0;
}
int left=depth(root.left)+1; //左子树的深度
int right=depth(root.right)+1; //右子树的深度
if(Math.abs(left-right)>1){ //不平衡的时候直接更改输出标志就可以了
flag=false;
return 0;
}
if(Math.abs(left-right)==1){ //差值等于1时,返回该节点的最大的绝对深度
return Math.max(left,right);
}
return left; //相等时,随便返回某一子树的深度即可
}
}