零基础学二叉树

article/2025/9/20 3:41:48

目录

二叉树的定义:

二叉树的应用:

认识二叉树:

二叉树的基本形式:

 二叉树的节点:

二叉树的高度和深度:

二叉树的子树:

二叉树的度:

满二叉树:

完全二叉树:

非完全二叉树:

平衡二叉查找数:


二叉树的定义:

二叉树(Binary tree)是树形结构的一个重要类型。许多实际问题抽象出来的数据结构往往是二叉树形式,即使是一般的树也能简单地转换为二叉树,而且二叉树的存储结构及其算法都较为简单,因此二叉树显得特别重要。二叉树特点是每个节点最多只能有两棵子树,且有左右之分 。

二叉树是n个有限元素的集合,该集合或者为空、或者由一个称为根(root)的元素及两个不相交的、被分别称为左子树和右子树的二叉树组成,是有序树。当集合为空时,称该二叉树为空二叉树。在二叉树中,一个元素也称作一个节点   。

二叉树的应用:

二叉树的部分应用有:1.可以查找自己家族的族谱,至少上溯至祖爷爷辈。2.用于海量数据并发查询。3.在实际使用时会根据链表和有序数组等数据结构的不同优势进行选择。有序数组的优势在于二分查找,链表的优势在于数据项的插入和数据项的删除。但是在有序数组中插入数据就会很慢,而在链表中查找数据项效率较低。而二叉树可以利用链表和有序数组的优势,也可以合并有序数组和链表的优势,二叉树也是一种常用的数据结构。

认识二叉树:

二叉树的基本形式:

二叉树的基本树形结构如图所示

 

 

 

 

 

------------------------------------------------------------------------------

 非二叉树

 二叉树的节点:

什么是二叉树的节点?

二叉树中每个元素都称为节点。

这里所说元素就是二叉树圆圈里包含的数字或其他元素。

如满二叉树中1~7都是二叉树的节点。

我们将二叉树分层来看

节点的层次定义为:从根节点开始,假设根节点为第1层,根节点的子节点为第2层,依此类推,如果某一个节点位于第L层,则其子节点位于第L+1层  

 那么在第 i 层最多有 2^{i-1}个节点

二叉树的高度和深度:

我们先给出二叉树高度和深度的定义

对于某节点来说

  • 深度是指从根节点到该节点的最长简单路径边的条数
  • 高度是指从最下面的叶子节点到该节点的最长简单路径边的条数

对二叉树

  • 深度是从根节点数到它的叶节点
  • 高度是从叶节点数到它的根节点

我们来看图

计算某点深度时,我们从根节点出发,向下计算 从根节点到该点的深度。

计算某点的高度时,我们从最底层的叶子节点出发,向上计算到该节点的高度。

值得注意的是,整个二叉树的高度和深度是一样的。如上图二叉树的高度=深度=3,但是节点的高度和深度一般不同。(这时在根节点深度定义为0的情况下,有时一些题目会将根节点深度定义为1,百度百科将根节点定义为0)

二叉树的子树:

图中的英文字母表示节点的值。图中标出了T1 ~ T6的数(T1~T6仅为部分子树)。子树其实就是整个二叉树的一部分吧分枝,且二叉树的子树需要包含有最底层的节点。比如T2(橙色部分)是一个子树,但是B,E,F却不构成子树。

我们在来看两个特别的子树其中T1是整个二叉数,T1也可以看成自身的字数。T6也是一个子树,只是这个子树没有分支只有一个节点所以我们习称为节点。 

对于度为零的节点也叫做叶子节点

二叉树的度:

二叉树的度表示节点的子树或直接继承者的数目,二叉树的度是一个子树或单子树

1度就代表只有一个子节点或者它是单子树,2度就代表有两个子节点或是左右子树都有,最大度数为2。并且两个子树有左右之分,顺序不可颠倒。

单子树形如

我们接着来说度

 

 

 对于度,我们可以理解为某个节点直接含有的分支数。

这个分支数是从有方向的,只能从上层往上层数。

比如(按圆圈中的数字命名节点),

节点1,2含有两个直接的分支,分别为2分支和3分支,所以节点1的度为2。(从2节点到1的是下层到上层的关系,不算一个分支)

节点3只有一个直接的分支,连接到7节点,所以节点3的度为1。

节点4,5,7没有分支,所以节点4,5,7的度为0。

满二叉树:

除最后一层无任何子节点外,每一层上的所有结点都有两个子结点的二叉树。

满二叉树在每个子节点(除最后一层的节点)度都为二的情况下,整个二叉树最多有 2^{i}-1个节点。

(一棵满二叉树的每一个结点要么是叶子结点,要么它有两个子结点,但是反过来不成立,因为完全二叉树也满足这个要求,但不是满二叉树)

那么下图的二叉树是满二叉树吗?

满二叉树的结点要么是叶子结点,度为0,要么是度为2的结点,不存在度为1的结点。

因此,图3中这个二叉树也是满二叉树。但是按照国内的定义,它却不是满二叉树

 

完全二叉树:

除最后⼀层不满外,其余层的都达到该层的最⼤节点数,最后如果不满,该层所有节点都全部靠左排
 


 

 这里的靠左排是指分支指向靠左

非完全二叉树:

存在不满层数(除最后一层)或者叶子节点靠右排的二叉树

第一层不满 

 7叶子节点靠右排

平衡二叉查找数:

又称高度平衡树,简称平衡二叉树

定义:

  • 可以是空树。
  • 假如不是空树,任何一个结点的左子树与右子树都是平衡二叉树,并且高度或深度之差的绝对值不超过 1。

其中左子树高度 - 右子树高度 = 左子树深度 - 右子树深度 = 平衡因子(BF  Balance Factor)

 对于平衡二叉树我们主要就在于它的平衡,而他的平衡体现以高度差来衡量。

我们再来看非平衡二叉树

 对于非平衡二叉树我们可以通过旋转将其转换为平衡二叉树,涉及内容较多,这里先不展开讲。

定义中的子树高度值之差绝对值不超过一怎么理解呢?

上面我们已经分析了二叉树的高度和深度。

下面我们来计算二叉树各个节点的平衡因子

 

我们以高度差计算平衡因子 左子树高度 - 右子树高度=平衡因子

(a)平衡二叉树

5的结点平衡因子就是 3 - 2 = 1;

2的结点平衡因子就是 1 - 2 = -1;

4的结点平衡因子就是 1 - 0 = 1;

6的结点平衡因子就是 0 - 1 = -1;

叶子结点都是为 0;

(b)不平衡二叉树

此节点往下 左子树高度- 右子树高度=平衡因子

3 的结点平衡因子就是 2 - 4 = -2;

1 的结点平衡因子就是 0 - 1 = -1;

4 的结点平衡因子就是 0 - 3 = -3;

5 的结点平衡因子就是 0 - 2 = -2;

6 的结点平衡因子就是 0 - 1 = -1;

叶子结点都是为 0;

平衡二叉树平衡因子绝对值 <= 1

下期将介绍有关节点,度的相关计算和红黑树,B-树,B+树,字典树,后缀树,广义后缀树,堆等类型。

今天就到这,明天见。🚀

❄❄❄❄❄❄❄❄❄❄❄❄❄❄❄❄❄❄❄❄end❄❄❄❄❄❄❄❄❄❄❄❄❄❄❄❄❄❄❄❄❄❄❄❄❄❄


http://chatgpt.dhexx.cn/article/RPtAMQZN.shtml

相关文章

npm 升级

npm 版本升级 mac版本 npm install -g npm1.网上有看到别的同学碰到升级报错的情况&#xff1a;可以试试用管理员身份安装&#xff1a; sudo npm install -g npm windows版本 npm install -g npm2.安装完成之后&#xff0c;输入npm -v检查是否升级成功&#xff0c;我是从6.…

npm 升级依赖包

首先安装升级插件 npm-check-updates $ npm install -g npm-check-updates # 或者 $ cnpm install -g npm-check-updates ncu 是 npm-check-updates 的缩写命令 输入ncu命令&#xff0c;可以看到需要升级安装包 # 查看更新ncu 可以看到有好几个包要更新 # 查看所有ncu命令…

npm升级自身版本

查看版本&#xff1a;npm -v 查看版本详情&#xff1a;npm version 用命令npm view npm version&#xff0c;运行后会输出到目前为止npm的所有版本&#xff0c;如图&#xff1a; 升级为特定的版本&#xff0c;命令:npm -g install npm4.0.2,运行后并检验版本如图&#xff1a;…

npm 升级后,无法运行

更新npm npm install -g npm9.2.0问题&#xff1a;无法加载文件 D:\Program Files\nodejs\npm.ps1&#xff0c;因为在此系统上禁止运行脚本。 解决&#xff1a;依次输入如下命令 get-ExecutionPolicySet-ExecutionPolicy -Scope CurrentUserRemoteSignedget-ExecutionPolicy…

npm升级

啥时候升级&#xff1f; 在使用npm安装依赖包&#xff0c;终端出现以下提示 New major version of npm available! 6.13.4 -> 8.5.5 Changelog: https://github.com/npm/cli/releases/tag/v8.5.5 Run npm install -g npm to update! 如何升级 npm install npm -g升级报…

npm升级导致npm报错

文章目录 问题解决其他 问题 事情起因在于&#xff0c;我在执行npm init -y的时候&#xff0c;提示我可以升级 好家伙&#xff0c;脑子一时不清醒&#xff0c;我就执行了。以前看到都没想过要执行&#xff0c;今天不知道怎么了&#xff0c;也许是早饭吃多了撑的 : ) 执行完之…

npm 升级遇到的问题

问题&#xff1a;在VUE项目中&#xff0c;当前的npm版本有点低&#xff0c;想对npm进行升级&#xff0c;将npm从6.14.13的版本升级到8.0.0版本&#xff0c;运行npm install -g npm8.0.0报错 解决方法&#xff1a; 找到node文件夹下面的npm.cmd&#xff0c;将它重命名为npmx.cm…

npm 升级node.js

升级NPM 到最新 查看npm 版本&#xff1a; npm -v 更新到最新版本&#xff1a; npm install npmlatest -g 升级Node.js 从node官网下载最新node.js 安装包覆盖原理的node.js 最新node.js 下载 winr cmd 输入 where node 查看原来node 安装路径 安装成功后查看node 版本

如何升级npm 和 安装nvm 及 升级node.js

1.NPM如何升级&#xff1f; 1.1.可以使用NPM自带的命令进行升级&#xff1a; npm install -g npm 注&#xff1a;这个命令会安装最新的&#xff0c;安装到全局。 2.查看NPM版本 npm -v 注&#xff1a;要是版本过低&#xff0c;可使用上面所说命令进行升级。 3.怎么把node.js升…

算法优化(1):基础知识-凸集,单峰函数,拟凸函数与凸函数,函数凹凸性定义

本文笔记介绍我最近学习的算法优化的基础知识&#xff0c;有&#xff1a; 最优化问题的一般形式约束问题的分类及形式优化问题的分类单峰函数&#xff08;Unimodal function&#xff09;的定义拟凸函数&#xff08;Quasiconvex function&#xff09;的定义凸集&#xff08;conv…

deep_learning_凹凸函数

什么是凸函数及如何判断一个函数是否是凸函数 t元j 一、什么是凸函数 对于一元函数f(xf(x)&#xff0c;如果对于任意tϵ[0,1]tϵ[0,1]均满足&#xff1a;f(tx1(1−t)x2)≤tf(x1)(1−t)f(x2)f(tx1(1−t)x2)≤tf(x1)(1−t)f(x2)&#xff0c;则称f(x)f(x)为凸函数(convex function…

德.摩根定律及其理解

德.摩根定律的定义如下&#xff1a; 文字描述如下&#xff1a; 使用对偶性可以很方便的记忆和使用这个定律。. 我们知道如下关系呈现对偶关系&#xff0c;可以认为是“非”的关系&#xff1a; 那么将 利用对偶关系对应改写可以得到&#xff1a; .那么可以对应得到&#xff1a;…

[产品07]-产品设计定律-菲茨定律/席克定律

[产品07]-产品设计定律-菲茨定律/席克定律 一、菲茨定律1-1定义1-2应用场景1-3菲茨定律启示 二、席克定律2-1定义2-2作用 一、菲茨定律 1-1定义 菲茨定律所提出的人机界面设计法则&#xff0c;主页定义了游标移动到目标之间的距离&#xff0c;目标的大小和所花费的时间之间的…

需求定律的4个准则——《可以量化的…

5.1.5 需求定律的4个准则 需求定律有4个准则&#xff1a;价值决定价格基准&#xff0c;竞争决定价格波动幅度。消费者盈余决定购买量&#xff0c;价格决定消费者的最低层次。 1&#xff09;价值决定价格基准 消费者购买产品是为了获得商品所带来的价值&#xff0c;商品能带来的…

摩尔定律即将走向终结?对未来更广阔世界影响的55个预测!

Datawhale干货 译者&#xff1a;罗泽铭&#xff0c;伦敦大学城市学院 原文&#xff1a;https://bzogrammer.substack.com/p/the-next-century-of-computing 原作&#xff1a;Charles Rosenbauer&#xff0c;审校&#xff1a;肖明远 在这篇文章中&#xff0c;我将对信息处理技术…

需求分析的概念和原则

概念和原则 需求分析是指在软件开发和项目管理中&#xff0c;通过收集、理解、分析和记录用户和系统对系统或产品的需求&#xff0c;以确定其详细的特征和功能。它是一个关键的过程&#xff0c;旨在确保项目成功地满足用户的需求和期望。 在进行需求分析时&#xff0c;有一些…

人的需求:马斯洛需求模型

​由来 1954年&#xff0c;美国心理学家亚伯拉罕马斯洛&#xff08;Maslow.A.H.&#xff09;出版了一本巨著《动机与人格》&#xff08;Motivation and Personality&#xff09;&#xff0c;在这本书中&#xff0c;他从人类动机的角度提出的需求层次理论。该理论强调人的动机是…