110.平衡二叉树

题目描述

给定一个二叉树,判断它是否是高度平衡的二叉树。

本题中,一棵高度平衡二叉树定义为:

一个二叉树每个节点 的左右两个子树的高度差的绝对值不超过1。

示例:

给定二叉树 [3,9,20,null,null,15,7]

    3
   / \
  9  20
    /  \
   15   7
返回 true 。

思路

1.根据平衡二叉树的定义可知,只要有一个结点它的左右子树深度相差超过1便不符合要求。
2.可以额外编写一个函数,用于计算一个结点的左右子树可以达到的深度,若深度差值符合要求,则一直递归下去,否则直接返回false即可。

Java代码实现

    public boolean isBalanced(TreeNode root) {
        if(root != null){
            int leftDepth = treeDepth(root.left);
            int rightDepth = treeDepth(root.right);
            if(Math.abs(leftDepth-rightDepth) <= 1)
                return isBalanced(root.left) && isBalanced(root.right);
            return false;
        }
        return true;
    }

    private int treeDepth(TreeNode root){
        if(root == null)
            return 0;
        return Math.max(treeDepth(root.left),treeDepth(root.right))+1;
    }
©著作权归作者所有,转载或内容合作请联系作者
【社区内容提示】社区部分内容疑似由AI辅助生成,浏览时请结合常识与多方信息审慎甄别。
平台声明:文章内容(如有图片或视频亦包括在内)由作者上传并发布,文章内容仅代表作者本人观点,简书系信息发布平台,仅提供信息存储服务。

相关阅读更多精彩内容

  • 题目 难度:★★☆☆☆类型:二叉树 给定一个二叉树,判断它是否是高度平衡的二叉树。 本题中,一棵高度平衡二叉树定义...
    玖月晴阅读 1,322评论 0 0
  • 题目描述 给定一个二叉树,判断它是否是高度平衡的二叉树。 本题中,一棵高度平衡二叉树定义为: 一个二叉树每个节点 ...
    zhipingChen阅读 422评论 0 1
  • 平衡二叉树 题目 给定一个二叉树,判断它是否是高度平衡的二叉树。 本题中,一棵高度平衡二叉树定义为: 一个二叉树每...
    饮酒醉回忆阅读 111评论 0 0
  • 110. 平衡二叉树给定一个二叉树,判断它是否是高度平衡的二叉树。本题中,一棵高度平衡二叉树定义为:一个二叉树每个...
    杏仁小核桃阅读 217评论 0 0
  • 题目描述 给定一个二叉树,判断它是否是高度平衡的二叉树。 本题中,一棵高度平衡二叉树定义为: 一个二叉树每个节点 ...
    莫小鹏阅读 501评论 0 0

友情链接更多精彩内容