面试经典(15)--判定是否是平衡二叉树

【LintCode 题解】小米面试算法题:平衡二叉树 题目描述: 给定一个二叉树,确定它是高度平衡的。对于这个问题,一棵高度平衡的二叉树的定义是:一棵二叉树中每个节点的两个子树的深度相差不会超过1。 点击在线测评代码 样例 1: 输入: tree = {1,2,3} 输出: true 样例解释: 如下,是一个平衡的二叉树。 1 / \ 2 3 样例 2: 输入:... 阅读详情

题目描述:   输入一棵二叉树的根节点,判断该树是不是平衡二叉树。如果某二叉树中任意节点的左右子树的深度相差不超过1,那么它就是一个平衡二叉树。

分析与解法:首先想到后续遍历二叉树。我们需要分析算法的参数问题。因为是后续遍历,先遍历左子树,再遍历右子树,最后遍历父节点,然后我们计算父节点的深度,计算父节点的深度需要使用左右子树的深度,所以可以使用指针参数返回子树的深度。


代码如下:

bool Balanced(BinaryNode *pRoot,int *depth)
{
	if(pRoot==NULL)
	{
		*depth=0;
		return true;
	}
	int left=0,right=0;
	if(Balanced(pRoot->left,&left) && Balanced(pRoot->right,&right))
	{
		if(left-right<=1 && left-right>=-1)
		{
			*depth=left>right?left+1:right+1;
			return true;
		}
	}
	return false;
}


面试官:为什么有了平衡二叉树,还要选择红黑树这种数据结构? 首先讲解为什么要使用红黑树之前,有必要先了解二叉查找树和平衡二叉树,然后继续介绍红黑树,带着这个问题,让我们一起来学习今天的内容吧。 二叉查找树 二叉查找树的特点就是左子树的节点值比父亲节点小,而右子树的节点值比父亲节点大,如下图: 二叉查找树中对于目标节点的查找过程类似于有序数组的二分查找,快速找到某个节点。n 个节点的二叉查找树,正常的情况下,查找的时间复杂度为 O(logn)。 为什么说是正常的情况下呢? 是因为二叉查找树有一种极端的存在,二叉树的大部分子节点都比父节点值小,然后导致所有的数据偏向左 阅读详情

相关推荐

55 - II. 平衡二叉树

输入一棵二叉树的根节点,判断该树是不是平衡二叉树。如果某二叉树中任意节点的左右子树的深度相差不超过1,那么它就是一棵平衡二叉树。节点不平衡,返回值为。我们设计一个递归函数。

qq_42889517的博客 696

leetcode110-python 平衡二叉树

Given a binary tree, determine if it is height-balanced.For this problem, a height-balanced binary tree is defined as:a binary tree in which the depth of the two subtrees of every node never differ by...

chkay399的博客 1530

你的小程序地图功能还只是“摆设”吗?支付宝地图API的深度玩法都在这里了!

🏆本文收录于《滚雪球学支付宝小程序开发》专栏,希望能够助你一臂之力,帮你早日登顶实现财富自由🚀;同时,欢迎大家关注&&收藏&&订阅!持续更新中,up!up!up!!

**My Coding Family** 1819

面试题——判断一棵树是否是平衡二叉树

bool IsBlance() { return _IsBlance(_root); } protected: bool _IsBlance(Node* root) { if (root == NULL) return true; int leftHeight = _Height(root->_left); int rightHeight = _Height(r

poison_biti的博客 1917

5. SAP UI5 视图控制器(Controller)初探

本教程的前一个步骤也就是第四个步骤,我们了解了 SAP UI5 XML 视图的使用方法。在该步骤里,我们在 XML 视图里声明了一个 Text 控件实例,该控件位于 sap.m 这个命名空间内。 本步骤会继续接触 SAP UI5 MVC 框架中三大基石的另一块:C - Controller,即控制器。 先看看本步骤完成之后,我们得到的 SAP UI5 应用能实现一个什么样的效果。 访问如下 url: http://localhost:8080/webapp/index.html 能看到一个 Say Hell

2007 年 ~ 2025 年,深耕 SAP 技术 18 年 4593

Go语言爬虫:chromedp 的详细使用

chromedp 是 Go 语言中无头浏览器自动化的终极利器。它能驱动真实的 Chrome 浏览器,处理 JavaScript 渲染、复杂交互和反爬虫机制

数据知道的博客 4492

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

二叉树的节点定义为public class TreeNode { int val; TreeNode left; TreeNode right; TreeNode(int x) { val = x; } }二叉树的深度:根节点到叶节点的最长路径长度 平衡二叉树:二叉树中任一节点的左右子树的深度相差不超过1递归的方法代码如下: public boolean is

jxfang的专栏 1725

红队攻防渗透技术实战流程:云安全之云原生安全:特权模式和挂载模式

红队云攻防实战1. 什么是云 1. 什么是云

HACKONE的博客 572

判断平衡二叉树

package leetcode; public class Balanced_binary_tree {      public static void main(String[] args) {              }            public boolean isBalanced(TreeNode root) {          if(root == null) {   ...

ZWB626的博客 239

两万字硬核指南!Python爬虫requests库从入门到精通:新手也能搞定所有爬取场景(附实战案例+避坑大全)

请求头是客户端发送给服务器的额外信息,比如User-Agent(浏览器类型)、Referer(来源页面)、Cookie(登录凭证)、(编码方式)等。Cookie是服务器存储在客户端的小型文本文件,包含用户的登录凭证、偏好设置等信息。浏览器会在每次请求时自动携带Cookie,服务器通过Cookie识别用户身份。代理IP是一个中间服务器,你的请求先发送到代理IP,再由代理IP发送到目标网站,目标网站只能看到代理IP的地址,看不到你的真实IP。

专注于Python爬虫开发,分享爬虫技巧、项目实战与反爬经验,使用Scrapy、BeautifulSoup等工具,解决数据抓取难题。 1496

PTC Creo软件二次开发:使用C++进行Creo二次开发实战

C++是一种静态类型的、编译式的、通用的、大小写敏感的、不规则的编程语言,支持过程化编程、面向对象编程和泛型编程。由Bjarne Stroustrup在贝尔实验室开发,最初作为C语言的增强版出现,后来发展成为一种独立的语言。C++不仅保留了C语言的高效性和灵活性,还引入了类、模板、命名空间等高级特性,使其成为开发复杂系统和软件的理想选择。

kkchenjj的博客 4038

判断一棵二叉树是否为平衡二叉树

1.先给出树节点信息 typedef struct tree{ struct tree *lchild; struct tree *rchlid;   int data; }tree,* Bitree; 2.原理 判断一棵树是否为平衡二叉树,要满足每个节点的左右子树的高度之差的绝对值不大于1。 因此,我们这里可以比较每个节点的左右字数高度,判断他们差的绝对值是否满足平衡二叉树的条...

苍白的咏叹调的博客 1079

ShowDoc item_id 未授权SQL注入漏洞复现

2024年6月,ShowDoc官方发布新版本修复了一个SQL注入漏洞。鉴于该漏洞无前置条件,易于利用,且默认情况下可暴破用户token获取系统后台权限,建议所有使用该系统的企业尽快升级修复,以确保系统安全。

0xSec 2357

book-to-skill Hermes Agent 安装详解:HERMES_HOME、分类目录与项目信任机制完整指南

**book-to-skill** 能把技术书籍 PDF、EPUB 等文档一键转换成 Hermes Agent 等 AI 编程助手可直接调用的技能。本文聚焦 Hermes Agent 的安装全流程:`HERMES_HOME` 环境变量如何定位技能目录、`<category>` 分类目录怎么选、以及项目级安装背后的信任机制,帮助新手一次装对。 [![book-to-skill Hermes Age

gitblog_00222的博客 877

SKUA-GOCAD入门教程-第七节 点的创建与编辑3

本文介绍了四种从井数据创建点集的方法

江洋大葱的博客 963

VB摄像头监控

该VB模块可对摄像头捕获的画面进行录像等,可在创建的窗口进行控制

c语言面试宝典(经典,超详细)

c语言面试宝典(经典,超详细) 2018年08月25日 09:32:19chengxuyuan997阅读数:7799 摘自:https://blog.youkuaiyun.com/chengxuyuan997/article/details/82048231 这几天有朋友反映给小编说让多发点关于面试的文章,小编深知从事IT行业的难处,跳槽多,加班多,薪...

weixin_30402085的博客 6504

假人有限元模型

假人模型,车辆碰撞假人有限元模型,适合做乘员安全的研究者利用

15个经典面试问题及回答思路,轻松获得一线大厂面试offer

(含BAT、小米、华为、美团、滴滴)和我自己整理Android复习笔记(包含Android基础知识点、Android扩展知识点、Android源码解析、设计模式汇总、Gradle知识点、常见算法题汇总。(24).线程池的相关参数,有哪些类型的线程池,线程池任务如何调度,任务队列只是先进先出的队列吗,任务有优先级怎么办,知道优先级反转吗?(4).已知前序遍历为{1,2,4,7,3,5,6,8},中序遍历为{4,7,2,1,5,3,8,6},它的二叉树是怎么样的?动态代理和静态代理的区别,是怎么实现的)

2401_84412624的博客 870

数学建模模型总结

这是本人在两年内准备参加数学建模竞赛搜集到的模型资料,已经经过了本人的筛选和整理,希望能够对准备参加数学建模竞赛的学弟学妹们提供一些帮助!

怀旧版电脑GBC模拟器

再现原版GBC掌机的界面,电脑运行连游戏界面都一样大小,很怀旧,很真实,(英文版)强烈推荐,很小的文件,很难才找到的。

前端面试必备-40道LeetCode经典面试算法题

2019年马上就要结束了,相信很多童鞋都开始蠢蠢欲动了,寻找新的机会了,但是工作太忙没有时间刷算法题,面试的时候好心虚。这里双手奉上40道LeetCode上经典面试算法题,整理的内容有点长,建议先收藏,慢慢消化,在来年顺利拿到满意的offer。 内容较多,整理不易,希望大家关注公众号【前端】,更多优质前端原创好文。 [LeetCode] 两数之和 给定一个整数数组和一个目标值,找出数组中和为...

大灰狼的小绵羊哥哥的博客 5624

【数据结构】二叉树 — 经典OJ面试题剖析!!!

二叉树的基本知识可以查看上一篇博客【数据结构】二叉树 — 图文并茂,带你领略它的魅力!!!二叉树所有题都是围绕着遍历进行的。任何一个二叉树,递归的时候一定是先递归到最左边的。 给你两棵二叉树的根节点p和q编写一个函数来检验这两棵树是否相同。如果两个树在结构上相同,并且节点具有相同的值,则认为它们是相同的。给定一个二叉树,判断它是否是高度平衡的二叉树。平衡二叉树:一个二叉树每个节点的左右两个子树的高度差的绝对值不超过 1 

小黑屋的黑小子的博客 1183

面试题55 - II. 平衡二叉树

题目描述 输入一棵二叉树的根节点,判断该树是不是平衡二叉树。如果某二叉树中任意节点的左右子树的深度相差不超过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

achong_2050的博客 363

平衡二叉树删除_面试官让我手写一个平衡二叉树,我当时就笑了

平衡二叉树对于初学者一直是一个比较复杂的知识点,因为其里面涉及到了大量的旋转操作。把大量的同学都给转晕了。这篇文章最主要的特点就是通过动画的形式演示。确保大家都能看懂。最后是手写一个平衡二叉树。一、概念平衡二叉树是外国的两个大爷发明的。一开始发明的是二叉查找树。后来觉得不给力演化成了平衡二叉树。那什么是二叉查找树呢?我们给出一张图来看看:看到这张图我们就会发现如下的特征。从每个节点出发,...

weixin_39557199的博客 133

面试官:了解二叉树吗,平衡二叉树,红黑树?

前言 面试过程中,多多少少会问一点数据结构(二叉树)的问题,今天我们来复习一下二叉树的相关问题,文末总结。 1. 二叉树的由来 在 jdk1.8 之前,HashMap 的数据结构由「数组+链表」组成,数组是 HashMap 的主体,链表是为了解决 Hash 冲突引入的,正常的数据存放是直接存在数组中,但如果发生 Hash 冲突就会以链表的形式进行存储,而在 jdk1.8之后,当链表的长度超过 8 之后,将会转换成红黑树经常存储… 相信这一段 HashMap 的描述,一定是大家所熟知的,其实细品之后,我们可以

niceyoo的博客 856

《剑指offer》——面试题55 - II. 平衡二叉树

难度:简单 题目 输入一棵二叉树的根节点,判断该树是不是平衡二叉树。如果某二叉树中任意节点的左右子树的深度相差不超过1,那么它就是一棵平衡二叉树。 示例 1: 给定二叉树 [3,9,20,null,null,15,7] 3 / \ 9 20 / \ 15 7 返回 true 。 示例 2: 给定二叉树 [1,2,2,3,3,null,null...

dss875914213的博客 136

数据结构(Java):力扣&牛客 二叉树面试OJ题(一)

二叉树面试OJ题(part1)

2401_83595513的博客 1928

带父节点的平衡二叉树_面试官让我手写一个平衡二叉树,我当时就笑了

平衡二叉树对于初学者一直是一个比较复杂的知识点,因为其里面涉及到了大量的旋转操作。把大量的同学都给转晕了。这篇文章最主要的特点就是通过动画的形式演示。确保大家都能看懂。最后是手写一个平衡二叉树。一、概念平衡二叉树是外国的两个大爷发明的。一开始发明的是二叉查找树。后来觉得不给力演化成了平衡二叉树。那什么是二叉查找树呢?我们给出一张图来看看:看到这张图我们就会发现如下的特征。从每个节点出发,...

weixin_42463997的博客 151

LeetCode 面试题55 - II. 平衡二叉树

输入一棵二叉树的根节点,判断该树是不是平衡二叉树。如果某二叉树中任意节点的左右子树的深度相差不超过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] ...

荔枝的FM 404
上一篇: 面试经典(16)--二叉树根节点到指定节点的路径
下一篇: 面试经典(14)--二叉树镜像
OS技术解密
博客等级 码龄16年 3760粉丝 189原创
评论
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

个

红包个数最小为10个

元

红包金额最低5元

当前余额3.43元 前往充值 >
需支付:10.00元
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付元
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值