二叉树——判断二叉树是否是平衡二叉树

  1. 判断二叉树是否为平衡二叉树

平衡二叉树

1.1. 问题

平衡二叉树的性质:要么是一棵空树,要么任何一个节点的左右子树的高度差的绝对值不超过1,。

给定一个二叉树的头结点head,判断这棵二叉树是否为平衡二叉树。如果二叉树的节点数为N,要求时间复杂度为O(N)。

1.2. 思路

这道题比较简单,后序遍历,拿到两个子树的高度,然后进行判断。

1.3. 代码

class Solution {
    public boolean isBalanced(TreeNode root) {
        return height(root) > -1;
    }

    private int height(TreeNode node) {
        if(null == node) {
            return 0;
        }
        int leftHeight = height(node.left);
        int rightHeight = height(node.right);
        if(leftHeight == -1 || rightHeight == -1 || Math.abs(leftHeight - rightHeight) > 1) {
            return -1;
        }
        return Math.max(leftHeight, rightHeight) + 1;
    }

Original: https://www.cnblogs.com/stepfortune/p/16261719.html
Author: 迈吉
Title: 二叉树——判断二叉树是否是平衡二叉树

原创文章受到原创版权保护。转载请注明出处:https://www.johngo689.com/594674/

转载文章受原作者版权保护。转载请注明原作者出处!

(0)

大家都在看

  • AcWing 175. 电路维修(搜索)

    题目描述 题目链接 题目大意 找到一条从左上角到右下角的通路 旋转格子次数最少 解题思路 运用双端队列广搜 不旋转则权重为0,旋转则权重为1 从队头扩展出的边的权重为0时,插到队头…

    数据结构和算法 2023年6月16日
    078
  • C++ 特殊矩阵的压缩存储算法

    1. 前言 什么是特殊矩阵? C++,一般使用 二维数组存储矩阵数据。 在实际存储时,会发现…

    数据结构和算法 2023年6月7日
    074
  • 全球开发数据源(转)

    ☝️源地址☝️ 开放数据源(一),全球地理、自然、经济数据等。 世界银行,数据网站: gapminder,编译数据源,包括世界卫生组织和世界银行覆盖经济、医疗和社会统计数据。 美国…

    数据结构和算法 2023年6月7日
    081
  • P3966 [TJOI2013]单词

    简要题意 给出一个 (N) 行的字符串 (S)(保留换行符,除换行符外仅包含小写英文字母),每一行是一个单词,求每个单词在整个字符串的出现次数。 (1 \le N \le 200)…

    数据结构和算法 2023年6月12日
    086
  • 「题解报告」Blocks

    首先我们可以发现,若 (a_l) ~ (a_r) 的平均值大于等于 (k) ,则这个区间一定可以转化为都大于等于 (k) 的。我们就把这个问题化简成了”求最长的平均值大…

    数据结构和算法 2023年6月8日
    071
  • 【POJ 3723 】Conscription(最小生成树)

    include include include include include include include include include include include in…

    数据结构和算法 2023年6月14日
    0100
  • 设计模式之Jdk动态代理

    什么是动态代理呢? 就是在java的运行过程中,动态的生成的代理类。(为了更熟悉的了解动态代理,你必须先熟悉代理模式,可点击设计模式之代理模式 阅读)我们知道java属于解释型语言…

    数据结构和算法 2023年6月8日
    078
  • tree-shaking

    来源 tree-shaking 最早由 Rich Harris 在 rollup 中提出。 为了减少最终构建体积而诞生。 以下是 MDN 中的说明: tree-shaking 是一…

    数据结构和算法 2023年6月12日
    084
  • 排序算法

    计算各元素在 a[0:n-1] 中的 名次, 最小的元素名次为 0, 最大的为 n-1. 再将 名次 作为 下标 ( index ) 存放进新数组. 1.2. 节中我们借助空间 (…

    数据结构和算法 2023年6月12日
    087
  • Lua5.4源码剖析:一. 简述lua变量类型可变特性的实现。

    lua变量为什么可以任意改变类型? 概述 lua是由C语言编写,运行在虚拟机上的弱类型解释型语言。 lua变量为什么可以任意改变类型? 切豆腐理论 对于硬盘上保存的数据来说,其本身…

    数据结构和算法 2023年6月8日
    0130
  • AcWing 1098. 城堡问题(搜索)

    题目链接 题目描述 请你编写一个程序,计算城堡一共有多少房间,最大的房间有多大。城堡被分割成 m∗n个方格区域,每个方格区域可以有0~4面墙。注意:墙体厚度忽略不计。 题目代码 #…

    数据结构和算法 2023年6月16日
    0107
  • [笔记]浅谈分块

    [笔记]浅谈分块 0 前言 分块真的是一个很好的思想和数据结构。它是一种优雅的暴力。——LYM 1 分块入门 一般来说,分块解决的是在序列上的操作问题。在某种情况下,它可以运用一些…

    数据结构和算法 2023年6月8日
    0109
  • 邮件html页编写指南

    写过邮件的 html一般都用table来布局,为什么呢?原因是大多数的邮件客户端(比如Outlook和Gmail),会过滤 经过多次的邮件编写实践及度娘的指导,我发现,编写 自制兼…

    数据结构和算法 2023年6月16日
    0186
  • P3871 [TJOI2010]中位数

    简要题意 你需要维护一个初始长度为 (N) 的序列 (A),有 (M) 个操作,支持: add a 在(A) 末尾插入一个数(a)。 mid 求(A) 的中位数中位数是指将一个序列…

    数据结构和算法 2023年6月12日
    088
  • 面试题19. 正则表达式匹配

    面试题19. 正则表达式匹配 太难了,要是面试的时候碰到这种题,直接寄了。最简单的办法就是直接调库 class Solution { public boolean isMatch(…

    数据结构和算法 2023年6月7日
    0124
  • java基于TreeMap或ConcurrentSkipListMap实现数据的范围查找

    等值查找,有数组、列表、HashMap等,已经足够了,范围查找,该用什么数据结构呢?下面介绍java中非常好用的两个类TreeMap和ConcurrentSkipListMap。 …

    数据结构和算法 2023年6月8日
    0104
亲爱的 Coder【最近整理,可免费获取】👉 最新必读书单  | 👏 面试题下载  | 🌎 免费的AI知识星球