leetcode代码记录(平衡二叉树

目录

  • 1. 题目:
  • 2. 我的代码:
  • 小结:

1. 题目:

在这里插入图片描述

给定一个二叉树,判断它是否是
平衡二叉树

示例 1:

输入:root = [3,9,20,null,null,15,7]
输出:true

示例 2:

输入:root = [1,2,2,3,3,null,null,4,4]
输出:false

示例 3:

输入:root = []
输出:true

2. 我的代码:

# Definition for a binary tree node.
# class TreeNode:
#     def __init__(self, val=0, left=None, right=None):
#         self.val = val
#         self.left = left
#         self.right = right
class Solution:def isBalanced(self, root: Optional[TreeNode]) -> bool:# 后序遍历统计深度# defdef height(node):# 终止条件if node == None:return 0# 后序遍历left_height = height(node.left)right_height = height(node.right)if abs(left_height - right_height) > 1 or left_height == -1 or right_height == -1:return -1return 1 + max(left_height, right_height)if height(root) == -1:return Falseelse:return True

检查是否是平衡二叉树,其实就是统计高度,然后做差,查看各个树的所有节点的高度差是否大于1。如果大于1则说明不是平衡二叉树;如果全部节点都满足高度差小于等于1,则说明是平衡二叉树。

因此,我们只需要把计算最大高度的代码修改一下即可,因为都是在求高度。只不过在求得高度后做差abs(left_height - right_height)查看是否满足平衡二叉树条件。这里,我们令如果高度差大于1则返回-1,以-1为记号,不断返回(因为只要有一个节点不满足就能确定这个二叉树一定不是平衡二叉树了)。

简便的写法,可以将判断条件合并,再加上 or left_height == -1 or right_height == -1就可以得知上一个节点是否平衡。其余正常返回树的高度即可,因为还要继续服务于上面的节点判断。

小结:

关注我给大家分享更多有趣的知识,以下是个人公众号,提供 ||代码兼职|| ||代码问题求解||
添加我的公众号即可:

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.hqwc.cn/news/572260.html

如若内容造成侵权/违法违规/事实不符,请联系编程知识网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

unity学习(70)——编译游戏发生错误2

1.全屏问题其实无所谓,windows用tab可以切出来的。 2.现在主要问题是服务器try了以后虽然不崩溃了,但不再显示2个实例对象了,unity和exe此时都只能看到一个实例对象 2.1把之前报错位置的try-catch先注释掉 2.2 unity中此时登录666账号&…

修改Jupyter Notebook的默认路径,以及在PowerShell中自定义其启动路径

修改Jupyter Notebook的默认路径,以及在PowerShell中自定义其启动路径 设置 Jupyter Notebook 配置文件,修改默认路径要在PowerShell中设置自定义的启动脚本,以确保Jupyter Notebook能够自动定位到当前路径设置后的效果 在使用Jupyter Notebo…

快速上手Spring Cloud 十:Spring Cloud与微前端

快速上手Spring Cloud 一:Spring Cloud 简介 快速上手Spring Cloud 二:核心组件解析 快速上手Spring Cloud 三:API网关深入探索与实战应用 快速上手Spring Cloud 四:微服务治理与安全 快速上手Spring Cloud 五:Spring …

Cesium自定义Shader实现流动尾线

目录 项目地址实现效果核心代码 项目地址 https://github.com/zhengjie9510/webgis-demo 实现效果 核心代码 class SpriteLineMaterialProperty {constructor(options) {this._definitionChanged new Cesium.Event();this._speed undefinedthis._color undefinedthis.spe…

使用patchelf解决vscode远程连接不支持低版本glibc的问题

使用patchelf解决vscode远程连接不支持低版本glibc的问题 目录 使用patchelf解决vscode远程连接不支持低版本glibc的问题1. 动态链接库下载2. 用 patchelf 修改 vscode-server 依赖的 glibc 版本 VScode 1.86 版本的 remote 要求 glibc 2.28 及以上,于是在各种旧版本…

vue3全局引入element-plus使用Message教程

文章目录 安装引入 Element Plus和组件样式示例注意安装与引入:按需引入:API 使用:样式问题:组件上下文:版本兼容性:错误处理: 这是 Element UI 的 Vue 3 版本。ElMessage 是 Element Plus 中的…

【前端】layui

参考视频:LayUI 1.介绍 官网:http://layui.apixx.net/index.html 国人16年开发的框架,拿来即用,门槛低 … 2. LayUi的安装及使用 Layui 是一套开源的 Web UI 组件库,采用自身轻量级模块化规范,遵循原生态的 HTML/CSS/JavaScript…

[ Linux ] git工具的基本使用(仓库的构建,提交)

1.安装git yum install -y git 2.打开Gitee,创建你的远程仓库,根据提示初始化本地仓库(这里以我的仓库为例) 新建好仓库之后跟着网页的提示初始化便可以了 3.add、commit、push三板斧 git add . //add仓库新增(变…

STM32串口收发单字节数据原理及程序实现

线路连接: 显示屏的SCA接在B11,SCL接在B10,串口的RX连接A9,TX连接A10。 程序编写: 在上一个博客中实现了串口的发送代码,这里实现串口的接收代码,在上一个代码的基础上增加程序功能。 Seiral.…

vue脚手架创建项目:账号登录(利用element-ui快速开发)(取消eslint强制格式)(修改端口号)

新手看不懂,老手不用看系列 文章目录 一、准备工作1.1 取消强制格式检查1.2 导入依赖,注册依赖 二、去element-ui官网找样式写Login组件2.1 引用局部组件2.2 运行项目 三、看一下发现没问题,开始修改前端的代码四、修改端口号4.1 修改后端端口…

基于SSM的高校推免报名(有报告)。Javaee项目。ssm项目。

演示视频: 基于SSM的高校推免报名(有报告)。Javaee项目。ssm项目。 项目介绍: 采用M(model)V(view)C(controller)三层体系结构,通过Spring Spri…