题目描述
输入一棵二叉树,判断该二叉树是否是平衡二叉树。
在这里,我们只需要考虑其平衡性,不需要考虑其是不是排序二叉树
平衡二叉树(Balanced Binary Tree),具有以下性质:它是一棵空树或它的左右两个子树的高度差的绝对值不超过1,并且左右两个子树都是一棵平衡二叉树。
示例1
输入
{1,2,3,4,5,6,7}
返回值
true
解题思路:
在求树高度的基础上,直接按要求进行判断
判断为空,则为平衡二叉树
判断左子树是否是
判断右子树是否是
判断高度差是否满足
都满足则返回树高度
java代码
import java.util.*;
public class Solution {
//如果以root为根节点的树是平衡二叉树则返回树的高度,否则返回-1;
public int depth(TreeNode root){
if(root==null) return 0;//如果是空树,则直接返回0,表示是平衡二叉树
int ldep=depth(root.left);
if(ldep==-1) return -1;//如果左子树不是,则直接返回不是
int rdep=depth(root.right);
if(rdep==-1) return -1;//如果右子树不是,则直接返回不是
int sub=Math.abs(ldep-rdep);
if(sub > 1) return -1;//如果高度差大于1,则直接返回不是
return Math.max(ldep,rdep)+1;//否则返回树的高度
}
public boolean IsBalanced_Solution(TreeNode root) {
return depth(root) != -1;//直接看返回结果是不是-1;
}
}
京公网安备 11010502036488号