当前位置: 首页 > news >正文

LeetCode:平衡二叉树【110】

LeetCode:平衡二叉树【110】

题目描述

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

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

一个二叉树每个节点 的左右两个子树的高度差的绝对值不超过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 。

题目分析

  解法的整体过程为二叉树的后序遍历对任何一个节点node来说,先遍历node的左子树,遍历过程中收集两个信息,node的左子树是否为平衡二叉树,node的左子树最深处level。如果发现左子树不是平衡二叉树,无需进行任何后续过程,此时返回什么已经不重要,因为已经发现整棵树不是平衡二叉树,退出遍历过程

  如果node的右子树也是平衡二叉树,此时就看左右子树的level差的绝对值是否大于1,大于1说明不是平衡二叉树,如果不大于1,则返回较大的一个

Java题解

/**
 * Definition for a binary tree node.
 * public class TreeNode {
 *     int val;
 *     TreeNode left;
 *     TreeNode right;
 *     TreeNode(int x) { val = x; }
 * }
 */
class Solution {
    public boolean isBalanced(TreeNode root) {
        boolean[] res = new boolean[1];
        res[0] = true;
        getHeight(root,1,res);
        return res[0];
    }
    
    public int getHeight(TreeNode head,int level,boolean[] res)
    {
        if(head==null)
            return level;
        int lh = getHeight(head.left,level+1,res);
        if(!res[0])
            return level;
        int rh = getHeight(head.right,level+1,res);
        if(!res[0])
            return level;
        if(Math.abs(lh-rh)>1)
            res[0]=false;
        return Math.max(lh,rh);
    }
}

  

转载于:https://www.cnblogs.com/MrSaver/p/9809124.html

相关文章:

  • 常用的shell脚本
  • XPath基础语法(1)
  • P1273 有线电视网
  • DotText源码阅读(2)-工程、数据库表结构
  • 23 Java学习之RandomAccessFile
  • 在本地机上还复在另一台机器上备份的数据库
  • CF535E Tavas and Pashmaks 单调栈、凸包
  • Java开发知识之Java中的泛型
  • {防}5--WMI入侵的防范
  • 开撕队-软件需求规格说明书
  • 根据企业信息化应用需求来分析工作流平台的选型
  • 约束
  • 办公室女性的心得感悟:生活中最重要的五句话
  • Sabota?
  • 受损Wave文件修复
  • [译] 怎样写一个基础的编译器
  • 2018以太坊智能合约编程语言solidity的最佳IDEs
  • ComponentOne 2017 V2版本正式发布
  • CSS实用技巧干货
  • electron原来这么简单----打包你的react、VUE桌面应用程序
  • Spring思维导图,让Spring不再难懂(mvc篇)
  • 包装类对象
  • 从零开始学习部署
  • 分布式事物理论与实践
  • 干货 | 以太坊Mist负责人教你建立无服务器应用
  • 开放才能进步!Angular和Wijmo一起走过的日子
  • 微服务入门【系列视频课程】
  • 新手搭建网站的主要流程
  • ​决定德拉瓦州地区版图的关键历史事件
  • ​云纳万物 · 数皆有言|2021 七牛云战略发布会启幕,邀您赴约
  • ###51单片机学习(1)-----单片机烧录软件的使用,以及如何建立一个工程项目
  • #每日一题合集#牛客JZ23-JZ33
  • (TipsTricks)用客户端模板精简JavaScript代码
  • (免费领源码)Python#MySQL图书馆管理系统071718-计算机毕业设计项目选题推荐
  • (一) springboot详细介绍
  • (转)IIS6 ASP 0251超过响应缓冲区限制错误的解决方法
  • (转)全文检索技术学习(三)——Lucene支持中文分词
  • (转)视频码率,帧率和分辨率的联系与区别
  • .NET 4.0网络开发入门之旅-- 我在“网” 中央(下)
  • .NET MVC 验证码
  • .net 反编译_.net反编译的相关问题
  • .net程序集学习心得
  • .net开发引用程序集提示没有强名称的解决办法
  • .sh 的运行
  • [ 2222 ]http://e.eqxiu.com/s/wJMf15Ku
  • [20161214]如何确定dbid.txt
  • [20171106]配置客户端连接注意.txt
  • [AutoSar]工程中的cpuload陷阱(三)测试
  • [C#]winform部署yolov5-onnx模型
  • [CDOJ 1343] 卿学姐失恋了
  • [EFI]DELL XPS13 9360电脑 Hackintosh 黑苹果efi引导文件
  • [ffmpeg] aac 音频编码
  • [git]git命令如何取消先前的配置
  • [HCIE] IPSec-VPN (手工模式)
  • [IE技巧] 如何让IE 启动的时候不加载任何插件