题目描述
输入一棵二叉树,判断该二叉树是否是平衡二叉树。
在这里,我们只需要考虑其平衡性,不需要考虑其是不是排序二叉树
平衡二叉树(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; } }