二叉树的学习

news2025/1/12 23:00:37

最近在复习数据结构和线性代数,先准备周六的线代考试,好好复习。

目录

树的概念

结点:

空树:

子树:

结点的度:

树的度:

层数:

结点的深度:

结点的高度:

树的深度:

树的高度:

森林:

特殊类型的二叉树

二叉树的概念

二叉树的特点

二叉树的性质

二叉树的遍历

真二叉树

满二叉树

性质:

完全二叉树

性质:


树的概念

结点

根结点、父结点、子结点、兄弟结点

空树:

一棵树可以没有任何结点。

子树:

左子树、右子树

结点的度:

这个结点的子树的个数。

树的度:

所有结点的度中最大的值。

层数:

根结点在第一层,根结点的子结点属于第二层……

其余结点的层次等于其父亲结点的层次+1

结点的深度:

从根结点到当前结点的唯一路径上的结点总数。

结点的高度:

从当前节点到最远叶子结点的路径上的结点总数。

树的深度:

所有结点深度中的最大值。

树的高度:

多有结点高度中的最大值。

森林:

有m颗(m>=0)互不相交的数组成的集合

特殊类型的二叉树

二叉查找树:

对于树中的每个结点X,它的左子树中所有项的值小于X,而它的右子树的中所有项的值大于X,这意味着该数所有的元素可以用某种一致的方式排序。

AVL树:

生成二叉树或者二叉查找树的时候,很容易失衡,造成的最坏的情况是只有左子树或者右子树,这样会导致树的检索效率会降低很多。

而AVL树是一种带有平衡条件的二叉查找树,保证树的深度必须是O(logN)

满足AVL树的条件是:每个结点的所子树和右子树深度最多差1,或者是空树

红黑树:

结点是红色或者黑色的平衡二叉树,通过颜色的约束来维持二叉树的平衡

性质:从根到叶子的最长的可能路径不多于最短的可能路径的两倍

满足红黑树的条件是:

  • 每个结点都只能是红色或者黑色
  • 根结点是黑色,每片叶子都是黑色的
  • 如果一个结点是红色的,则它的两个子结点是黑色的,在一条路径上不能出现相邻的两个红色结点
  • 从任意一个节点到其每个叶子的所有路径都包含着相同数目的黑色结点

二叉树的概念

以树干的分值数量为准,将树分为二叉树与多叉树,二叉树是n个有限元素的集合,这个集合可以为空——空树。

二叉树是指树中结点的度不大于2的有序树,是一种最简单最重要的树。

二叉树的特点

  • 每个结点的度最大是2
  • 左子树和右子树是有顺序的
  • 即使一个结点只有一颗子树,也要区分左右子树

二叉树的性质

  • 二叉树的第i层上最多有2^{i-1}(i≥1)个节点
  • 深度为h的二叉树中至多含有2^{h-1}个节点
  • 若在任意一棵二叉树中,有n0个叶子节点,有n2个度为2的节点,则必有n0=n2+1
  • 具有n个节点的满二叉树深为log2n+1
  • 若对一棵有n个节点的完全二叉树进行顺序编号(1≤i≤n),那么,对于编号为i(i≥1)的节点存在:
    • 当i=1时,该节点为根,它无双亲节点
    • 当i>1时,该节点的双亲节点的编号为i/2
    • 若2i≤n,则有编号为2i的左节点,否则没有左节点
    • 若2i+1≤n,则有编号为2i+1的右节点,否则没有右节点

二叉树的遍历

按照某种遍历方式对二叉树进行遍历。可以把二叉树中所有结点排列为一个线性序列,在该序列中,除第一个结点外,每个结点都只有一个直接前驱结点,出最后一个结点外,每个结点都有一个后继结点。

真二叉树

所有结点的度要么是0,要么是2

满二叉树

最后一层结点的度都为0,其他的结点的度都为2

性质:

对于一颗满二叉树,它的高是h(h>=1)

  • 第i层的结点数:2^{i-1}
  • 叶子结点数:2^{h-1}
  • 总结点数n,则n=2^{h}-1=2^{0}+2^{1}+2^{2}+2^{3}+……+2^{h-1}
  • h=log_{2}n+1

同样高度的二叉树中,满二叉树的叶子结点数量最多,总结点数最多

完全二叉树

叶子结点只会出现在最后两层,且最后一层的叶子结点都靠左对齐。

满二叉树对结点从上至下,从左往右开始编号,它的编号与相同高度的慢二叉树中的编号对应。

性质:

度为1的结点只有左子树,度为1的结点要么是1个,要么是0个

同样结点数量的二叉树,完全二叉树的高度最小(从上往下,从左往右排布)

假设完全二叉树的高度为h(h>=1),则满足:

  • 至少有2^{h-1}个结点,2^{0}+2^{1}+2^{2}+2^{3}+……+2^{h-2}个结点
  • 最多有2^{h-1}个结点(满二叉树),2^{0}+2^{1}+2^{2}+2^{3}+……+2^{h-1}

假设结点总数为n,则满足:

  • 2^{h-1}<=2^{h}
  • h-1<=log_{2}n<h

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

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈,一经查实,立即删除!

相关文章

matplotlib运用:电商广告投入及销量预测【数据集+完整代码】

前期准备 数据准备 数据集有两个表 销售数据表投放费用的广告费用表 文章源码获取方式 &#x1f449;&#x1f449; 点击文末名片 1. 分别按 日 和 月 分析销售收入 绘制子图 figure(numNone, figsizeNone, dpiNone, facecolorNone, edgecolorNone,frameonTrue)num:图像…

23岁大专零基础学网络安全能找到工作吗?

当然好找工作&#xff0c;如今在21世纪的信息时代&#xff0c;我们的生活与互联网越来越不可分割。但与此同时&#xff0c;信息安全事件也不时发生&#xff0c;网络安全越来越受到关注。譬如&#xff0c;近期360集团公布黑客帝国对我国进行长达10年的网络攻击&#xff1b;北京健…

MySQL调优方式

1. 选择合适的存储引擎: InnoDB 除非你的数据表使用来做只读或者全文检索 (相信现在提到全文检索&#xff0c;没人会用 MYSQL 了)&#xff0c;你应该默认选择 InnoDB 。 你自己在测试的时候可能会发现 MyISAM 比 InnoDB 速度快&#xff0c;这是因为&#xff1a; MyISAM 只缓存索…

三、DRF关联表的序列化(通过主表,查询从表数据)

官方文档&#xff1a; Serializers - Django REST framework中文站点 上一章&#xff1a; 二、Django REST Framework (DRF)序列化&反序列化_做测试的喵酱的博客-CSDN博客 一、前提 models.py class MiaoClass(models.Model):id models.AutoField(primary_keyTrue, v…

Springboot +spring security,实现前后端分离,使用JSON数据格式登录(将表单提交方式改成json格式登录)

一.简介 在前面的文章中&#xff0c;我们使用表单方式完成登录提交&#xff0c;但是目前基本都是前后端分离项目&#xff0c;很少使用表单提交的方式&#xff0c;基本都是json方式&#xff0c;使用ajax提交&#xff0c;那么我们怎么将表单提交方式改成json格式登录呢&#xff…

语雀批量导出 mardown 文档(不需要 token)

推荐一个小工具&#xff1a;renyunkang/yuque-exporter &#xff0c;可以不借助语雀超级会员的 token 实现批量导出 markdown 文档。我的语雀知识库又可以实现免费迁移了&#xff0c;点个小星星支持一下。 说明&#xff1a; 这是一个基于puppeteer 来模拟用户在浏览器的操作…

基于深度强化学习的目标驱动型视觉导航泛化模型

深度强化学习在目标驱动型视觉导航的泛化 参考论文《Towards Generalization in Target-Driven Visual Navigation by Using Deep Reinforcement Learning》 文章目录 深度强化学习在目标驱动型视觉导航的泛化1. 目标驱动型视觉导航问题2. 创新点和解决的问题2.1 创新点2.2 解…

随身WIFI折腾日记(四)---拓展USB接口读取U盘内容

五、USB行为控制 随身WIFI对外交互的接口只有WIFI和USB接口。如果要想接入其他硬件设备&#xff0c;拓展USB接口至关重要&#xff0c;对于USB接口的控制&#xff0c;参考如下链接: openstick项目官方教程:控制usb行为 HandsomeMod/gc: A Simple Tool To Control Usb Gadget …

Opencv C++图像处理:点多边形测试 + 矩 + 凸包 + 映射 + 反向投影

文章目录 1、点多边形测试1.1、计算像素点是在轮廓内部、外部或边界上&#xff1a;cv::pointPolygonTest()1.2、计算最小值和最大值及其位置&#xff1a;cv::minMaxLoc()1.3、实战案例 2、矩2.1、计算多边形或光栅化形状的三阶以下的所有力矩&#xff1a;cv::moments()2.2、计算…

Regularization

在图像中的特征处理&#xff1a; 平均亮度的去除 SVD Whiten PCA 参数初始化策略 数据归一化&#xff1a; 标准归一化缩放归一化PCA/SVD 数据归一化对梯度的影响 归一化后&#xff0c;可以更快的搜索到最优值点 正则化 数据增强与早停 图像数据的增强主要是通过算法…

测试新手如何去学习接口自动化测试 ?从这一套测试框架开始 。

接口自动化测试框架系列之整体介绍 1.接口自动化测试1.自动化框架概述2.搭建自动化测试框架3.测试框架中所使用到的技术 1.接口自动化测试 自动化测试虽然是测试中比较热的一门技术 &#xff0c;但凡一个测试岗位&#xff0c;你几乎都能看到有自动化测试的要求 。但不得不说&a…

关于深度学习方面的一些概念

1、自学习&#xff08;self-taught learning&#xff09;与半监督学习   自学习(self-taughtlearning)是不要求未标注数据 X u X_u Xu​和已标注数据 X l X_l Xl​来自同样的分布。另外一种带限制性的方式也被称为半监督学习&#xff0c;它要求 X u X_u Xu​和 X l X_l Xl​服…

[快速入门前端17] CSS 选择器(6) 选择器总结

基本选择器 选择器说明语法通配符作用范围为所有标签&#xff0c;用于页面整体样式* { color: red }元素作用于同种标签&#xff0c;不能进行差异化样式设定p { color: red }类别作用于我们自行设定的类别&#xff0c;是使用频率最高的选择器.myClass { color: red }ID选取当前…

15JS06——流程控制-循环

目标&#xff1a; 1、循环 2、for循环 3、双重for循环 4、while循环 5、do while循环 6、continue break 7、命名规范以及语法格式 一、循环 1、循环的目的 可以重复执行某些代码 2、JS中的循环 for循环 while循环 do…while循环 二、for循环 在程序中&#xff0c;一…

机器学习 - 决策树

决策树是一种流程图&#xff0c;可以帮助我们根据以前的经验进行决策 比如&#xff0c;一个人将尝试决定他/她是否应该参加喜剧节目 下面是要用到的数据集 AgeExperienceRankNationalityGo36109UKNO42124USANO2346NNO5244USANO43218USAYES 读取并打印数据集 import pandas…

Transformer、Bert、Gpt对比系列,超详细介绍transformer的原理,bert和gpt的区别

一、Transformer架构图 Transformer 是一种用于序列到序列学习的神经网络模型&#xff0c;主要用于自然语言处理任务&#xff0c;如机器翻译、文本摘要等。它在2017年由 Google 提出&#xff0c;采用了注意力机制来对输入序列进行编码和解码。 Transformer 模型由编码器和解码…

随身WIFI折腾日记(五)---远程视频监控

六、远程视频监控 为了实现基于随身WIFI的网络摄像头&#xff0c;我参考了如下视频课程&#xff1a; 韦东山老师手把手带你从0开始自己做一个视频监控项目 系统由三部分组成&#xff1a;推流端(随身WIFI)、流媒体服务器(云服务器)、拉流端(浏览器/VLC播放器) 方案&#xff1…

NetworkInterface类

文章目录 1. 简介2. 工厂方法3. 获取方法 1. 简介 NetworkInterface类表示一个本地IP地址。这可以是一个物理接口&#xff0c;如额外的以太网卡&#xff08;常见于防火墙和路由器&#xff09;&#xff0c;也可以是一个虚拟接口&#xff0c;与机器的其它IP地址绑定到同个物理硬…

ensp实践dhcp服务

ensp实践dhcp服务 1、dhcp接口分配模式2、dhcp接口地址池分配模式3、dhcp布拉布拉布拉 1、dhcp接口分配模式 1.1、路由器AR1配置dhcp动态获取 <Huawei>system-view [Huawei]interface g0/0/0 [Huawei-GigabitEthernet0/0/0]ip address 10.1.1.1 24 [Huawei-GigabitEthe…

PixiJS 源码解读:绘制矩形,底层都做了什么?

大家好&#xff0c;我是前端西瓜哥&#xff0c;今天带大家看一下 PixiJS 的源码实现。 PixiJS 是一个非常流行的 Canvas 库&#xff0c;start 数将近 4w。 使用 PixiJS 简单易用的 API&#xff0c;我们可以在浏览器页面的 Canvas 元素上高性能地绘制图形&#xff0c;实现流畅…