二叉树详解:带你掌握二叉树

news2024/10/7 20:25:31

目录

    • 前言
    • 1. 树型结构
      • 1. 1 树的概念
      • 1.2 树的特点
      • 1.3 树的相关术语
    • 2. 二叉树(binary tree)
      • 2.1 二叉树的概念
      • 2.2 二叉树中的特殊树
        • 2.2.1 满二叉树
        • 2.2.2 完全二叉树
      • 2.3 二叉树的性质
    • 3. 二叉树的遍历
      • 3.1 前序遍历
      • 3.2 中序遍历
      • 3.3 后序遍历
      • 3.4 层序遍历
    • 总结

前言

因为二叉树是一种特殊的树,所以想要学习好二叉树,必须了解树型结构,知道树的基本概念。所以正式开始学习之前,在前面为大家引入了树的概念。

1. 树型结构

1. 1 树的概念

树是一种非线性的数据结构,它是有n个节点构成的集合,把它称为树,是因为这种结构看起来就像一个倒挂的树,根在上面,叶在下面。
树树

1.2 树的特点

  • 有一个特殊的节点,没有前驱节点,我们将此称为根节点。
  • 树是递归定义的。
  • 树的任何节点都可以有任意后继,但是它们不会交叉。
  • 树是一个非线性数据结构。

1.3 树的相关术语

  • 根节点:一个特殊节点,没有前驱节点;上图:第一个1 。
  • 节点的度:一个节点拥有的子树的多少,就是该节点的度;上图:9的度为:2 。
  • 树的度:一棵树最大节点的度就是树的度; 上图:最大的节点的度为3 ,则树的度为3 。
  • 叶节点:又称叶子节点,终端节点,度为零的节点;上图:3、4等都是叶节点。
  • 父节点:又称双亲节点,父亲节点,一个节点有子节点,则就是这是字节点的父节点;上图:9是3的父节点。
  • 子节点:又称孩子节点,一个节点下面与连接的节点就是子节点;上图:3是9的子节点。
  • 节点的层次:根节点为第一层,根节点的子节点为第二层,以此类推。
  • 树的高度或深度:树中最大的节点的层次。

2. 二叉树(binary tree)

2.1 二叉树的概念

二叉树是一种树形数据结构,是一种特殊的树,二叉树中每个节点最多只能有两个子节点,并且二叉树的次序是不可颠倒的,是一颗有序树。
树
树

2.2 二叉树中的特殊树

二叉树是一种特殊的树,而特殊树中还会有特殊。

2.2.1 满二叉树

一棵二叉树,如果每层的结点数都达到最大值,则这棵二叉树就是满二叉树。也就是说,如果一棵
二叉树的层数为K,且结点总数是 ,则它就是满二叉树。
在这里插入图片描述

2.2.2 完全二叉树

完全二叉树是效率很高的数据结构,完全二叉树是由满二叉树而引出来的。对于深度为K的,有n
个结点的二叉树,当且仅当其每一个结点都与深度为K的满二叉树中编号从0至n-1的结点一一对应时称之为完全二叉树。 要注意的是满二叉树是一种特殊的完全二叉树。
在这里插入图片描述

2.3 二叉树的性质

  1. 二叉树是由节点和边构成的树形结构,每个节点最多有两个子节点,分别称为左子节点和右子节点,没有子节点的节点称为叶子节点。
  2. 二叉树有一个根节点,其它节点都是根节点的子节点。根节点没有父节点。
  3. 对于一个有n个节点的二叉树,设其高度为h,则h的取值范围为1到n,且h为log2(n+1)向上取整。
  4. 在二叉树的第i层上,最多有2^(i-1)个节点。
  5. 若深度为h的二叉树满足:每个节点都有两个子节点,且所有叶子节点都在第h层或h-1层,则称该树为满二叉树。满二叉树的节点数为2^h-1。
  6. 若深度为h的二叉树最后一层只有叶子节点,其它层都是满的,则称该树为完全二叉树。完全二叉树的节点数在1到2^(h-1)之间。
  7. 若二叉树的左右子树可以交换位置且仍为同一棵树,则该二叉树为镜像二叉树。1. 二叉树是由节点和边构成的树形结构,每个节点最多有两个子节点,分别称为左子节点和右子节点,没有子节点的节点称为叶子节点。
    一些练习的题
    1.某二叉树共有 399 个结点,其中有 199 个度为 2 的结点,则该二叉树中的叶子结点数为( )
    A 不存在这样的二叉树
    B 200
    C 198
    D 199
    2.在具有 2n 个结点的完全二叉树中,叶子结点个数为( )
    A n
    B n+1
    C n-1
    D n/2
    3.一个具有767个节点的完全二叉树,其叶子节点个数为()
    A 383
    B 384
    C 385
    D 386
    4.一棵完全二叉树的节点数为531个,那么这棵树的高度为( )
    A 11
    B 10
    C 8
    D 12
    答案:
    1.B
    2.A
    3.B
    4.B

3. 二叉树的遍历

二叉树的遍历是一个重要的点,是一个必须要掌握的点,遍历分为前中后序遍历,层序遍历四种。我们将使用这张图详细介绍一下。
遍历(Traversal)是指沿着某条搜索路线,依次对树中每个结点均做一次且仅做一次访问。访问结点所做的操作依赖于具体的应用问题。
遍历是二叉树上最重要的操作之一,是二叉树上进行其它运算之基础。
在这里插入图片描述

3.1 前序遍历

前序遍历的遍历顺序:访问根结点—>根的左子树—>根的右子树。
遍历结果:123456
遍历
如上图:遍历根节点1,然后遍历左子树2,一直遍历到左子树为null。然后返回途中遍历右子树,3的右子树为null。然后返回到2,2的右子树为null,返回到根节点1。1的左树已经遍历一遍,所以继续遍历1的右子树4,然后先遍历左子树5,5的左右都为空,则返回遍历4的右子树6。6的左右都为空,原路返回,到根节点遍历结束。

3.2 中序遍历

根的左子树—>根节点—>根的右子树。
遍历结果:321546

3.3 后序遍历

根的左子树—>根的右子树—>根节点。
遍历结果:325641

3.4 层序遍历

除了先序遍历、中序遍历、后序遍历外,还可以对二叉树进行层序遍历。设二叉树的根节点所在
层数为1,层序遍历就是从所在二叉树的根节点出发,首先访问第一层的树根节点,然后从左到右访问第2层上的节点,接着是第三层的节点,以此类推,自上而下,自左至右逐层访问树的结点的过程就是层序遍历。
遍历结果:124356

一些练习选择题

  1. 某完全二叉树按层次输出(同一层从左到右)的序列为 ABCDEFGH 。该完全二叉树的前序序列为()
    A: ABDHECFG B: ABCDEFGH C: HDBEAFCG D: HDEBFGCA
  2. 二叉树的先序遍历和中序遍历如下:先序遍历:EFHIGJK;中序遍历:HFIEJKG.则二叉树根结点为()
    A: E B: F C: G D: H
  3. 设一课二叉树的中序遍历序列:badce,后序遍历序列:bdeca,则二叉树前序遍历序列为()
    A: adbce B: decab C: debac D: abcde
  4. 某二叉树的后序遍历序列与中序遍历序列相同,均为 ABCDEF ,则按层次输出(同一层从左到右)的序列为()
    A: FEDCBA B: CBAFED C: DEFCBA D: ABCDEF
    【参考答案】 1. A 2. A 3. D 4. A

总结

这篇博客主要为大家带来树及二叉树的基本概念,性质,遍历方式等,下篇博客将为大家带来代码的实现以及应用。
期待大家关注!
最后,祝大家61快乐,天天开心!

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

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

相关文章

基于matlab使用蒙特卡罗模拟生成雷达系统的接收机工作特性 (ROC) 曲线

一、前言 此示例说明如何使用蒙特卡罗模拟生成雷达系统的接收机工作特性 (ROC) 曲线。接收器工作特性决定了系统在目标不存在(误报)时抑制大杂散信号值时检测目标的能力。检测系统将通过将接收到的信号值与预设阈值进行比较来声明…

Angular学习笔记:environment.ts文件

本文是自己的学习笔记,主要参考资料如下。 - B站《Angular全套实战教程》,达内官方账号制作,https://www.bilibili.com/video/BV1i741157Fj?https://www.bilibili.com/video/BV1R54y1J75g/?p32&vd_sourceab2511a81f5c634b6416d4cc1067…

网络监控工具

网络监控是一项重要的 IT 操作,可控制网络中的危险信号,并有助于避免潜在的业务问题。网络监控工具提供有关网络可用性和运行状况的见解,并跟踪 CPU 使用率、延迟和数据包丢失等关键性能指标,使管理员能够全面了解网络。 为什么网…

Kafka Schema-Registry

一、为什么需要Schema-Registry 1.1、注册表 无论是 使用传统的Avro API自定义序列化类和反序列化类 还是 使用Twitter的Bijection类库实现Avro的序列化与反序列化,这两种方法都有一个缺点:在每条Kafka记录里都嵌入了schema,这会让记录的大…

持续集成部署-微前端 镜像可以有多小?

微前端 镜像可以有多小? 1. 需求2. 开整 1. 需求 目前项目前端的镜像大小基本在 150M 左右,试下能不能缩小到 20M? 看了下前端打包后的压缩包只有 几 兆; 想着有空调试下,第一反应应该是使用 alpine 镜像&#xff0…

Delving into Shape-aware Zero-shot Semantic Segmentation(CVPR2023)

文章目录 摘要本文方法Pixel-wise Vision-Language AlignmentShape ConstraintSelf-supervised Spectral Decomposition推理 实验结果 摘要 由于大规模视觉语言预处理取得了令人瞩目的进展,最近的识别模型可以以零样本和开放集的方式对任意对象进行分类&#xff0c…

WIKIBON:大模型炒作中,有哪些云与AI的新趋势?

进入2023年以来,以ChatGPT为代表的大模型喧嚣引发了AI的新一轮炒作热潮,堪比当年的加密货币。不同的是,以微软、NVIDIA、AWS、Google等为代表的云与芯片大厂纷纷实质性入局大模型,为大模型AI注入持续的生命力。因此ChatGPT可类比于…

【网络原理】TCP/IP四层模型中的重点网络协议

目录 🌟一、应用层协议 🌈1、XML协议 🌈 2、JSON 🌈 3、其他协议 🌟二、传输层协议(UDP与TCP重点) 🌈1、UDP协议格式 🌈 2、TCP协议格式 🎉TCP的10条…

字母钥匙圈

钥匙圈,字母! 项目概况: 在这个项目中,您将学习使用字母制作钥匙圈! 放置字母 是时候发挥创意了。为您的朋友或您自己设计一个。 指示 首先将字母拖到红色底座上(位于“设计入门”>“字母和数字”下…

RESTful Python

RESTful Python是一种使用Python编程语言实现RESTful API的方法。下面是一些常用的Python库和框架,可以用来创建RESTful API: Flask: Flask是一个轻量级的Python Web框架,可以用来创建RESTful API。它具有灵活、易于使用和快速开发的特点。 …

[数据库]关于数据库设计的原则

数据表设计原则: 自动编号的ID应该设计为bigint,因为int可能不够用,并且,为了便于统一管理,写的舒心不出错,建议所有表的自增ID全部使用bigint 。(缺点是占空间,如果有20亿条数据,浪…

地震勘探基础(二)之地震分辨率

地震分辨率 分辨率(resolution)表示分离出两个十分靠近的物体的能力,一般用距离表示。如果两个物体之间的距离大于某个特定距离时可以分辨出是两个分离的物体,小于这个特定距离时就不再能分辨出是两个物体,那么这个特…

电压放大器在超声波测距仪中的应用实例研究

超声波测距仪是一种用于测量距离的设备,其原理是利用超声波在空气中传播的速度和反射特性来计算距离。而电压放大器则是超声波测距仪中的一个重要组成部分,它可以将超声波信号放大到足够强的水平,以便于后续处理和显示。本安泰电子将为大家介…

【学习日记2023.6.1】数据库隔离级别

1. 数据库隔离级别 1.1 事务 事务只是一个改变,是一些操作的集合;用专业的术语讲,他就是一个程序的执行单元;事务本身其实并不包含这4个特性,只是我们需要通过某些手段,尽可能的让这个执行单元满足这四个特…

【C语言进阶笔记】

文章目录 1. const(常量指针、指针常量)2. static3. extern4. 指针数组和数组指针5. 结构体对齐6. int / uint取值范围、二进制形式与转换、负数表示7. \0,0,"0",0之间的区别8. 类型自动转换9. 内存结构10. …

【前端之旅】nvm-Node版本管理工具

一名软件工程专业学生的前端之旅,记录自己对三件套(HTML、CSS、JavaScript)、Jquery、Ajax、Axios、Bootstrap、Node.js、Vue、小程序开发(Uniapp)以及各种UI组件库、前端框架的学习。 【前端之旅】Web基础与开发工具 【前端之旅】手把手教你安装VS Code并附上超实用插件…

【HttpRunnerManager】搭建接口自动化测试平台操作流程

一、需要准备的知识点 1. linux: 安装 python3、nginx 安装和配置、mysql 安装和配置 2. python: django 配置、uwsgi 配置 二、我搭建的环境 1. Centos7 (配置 rabbitmq、mysql 、Supervisord) 2. python 3.6.8 (配置 django、uwsgi&am…

自然语言处理实战9-大语言模型的训练与文本生成过程

大家好,我是微学AI,今天给大家介绍一下自然语言处理实战9-大语言模型的训练与文本生成过程,以下是本文的目录结构: 文章目录 1.引言 2.大语言模型概述 3.大语言模型的应用项目 3.1 语言生成 3.2 机器翻译 3.3 问答系统 3.4 自动…

Express框架从入门到如土

目录 前言一,初体验二,路由2.1 什么是路由2.2. 路由的使用2.3 获取请求报文参数2.4 id的通配2.5 响应的设置 三,中间件3.1 中间件概述3.2 全局中间件与路由中间件的比对3.3 全局中间件的使用3.4 局部中间件的使用3.5 静态资源中间件&#xff…

“邮件营销新趋势,这个平台让你收获颇丰!

随着各媒体平台的迅速发展,2023年大家更专注于视频营销、网红营销、直播营销等营销方式。可以见得,数字媒介手段的发展,对于营销方式也产生了巨大的影响。但是,企业在拥抱新兴的营销方式的同时,也不要忽视传统的营销方…