数据结构---树和二叉树

这里写目录标题

  • 树和二叉树的定义
    • 树的定义
    • 树的基本术语
    • 线性结构和树形结构的比较
    • 二叉树的定义
      • 起因
      • 定义
  • 案例引入
    • 前缀码编码
    • 表达式的实现
    • 二叉树的抽象类型定义
  • 二叉树的性质和存储结构
    • 二叉树的性质
    • 二叉树的特殊形式
      • 满二叉树
      • 完全二叉树
    • 完全二叉树的两个性质
    • 二叉树的存储结构
      • 顺序存储结构
      • 链式存储结构
    • 遍历二叉树
      • 简介
      • 先序
      • 中序
      • 后序
  • 一级目录
    • 二级目录
    • 二级目录
    • 二级目录

树和二叉树的定义

树的定义

在这里插入图片描述
树 属于1:n的形式,属于非线性结构

在这里插入图片描述
有且仅有一个根,其余的都是子树

而字树也有自己的根和子树,所以,树是一个递归的定义
在这里插入图片描述

![在这里插入图片描述](https://img-blog.csdnimg.cn/677eb0f85d6945028e4fa02b208e06f4.png#pic_center

树的基本术语

在这里插入图片描述
结点的度:结点拥有的子树的个数,或者是分支的个数,或者是指针的个数

度=0:叶子
度!=0:分支节点或者叫内部节点

树的度:各节点度的最大值
树的深度:最大的层数(根节点为第一层),图中树的深度是四层

孩子:结点子树的根结点
双亲:与孩子反过来
例如:B是A的孩子;A是B的双亲

子孙:某节点子树中的任一个结点
祖先:从根到该结点所“途径"的"所有“结点,例如,H的祖先是A、D

在这里插入图片描述

在这里插入图片描述
一棵树也是森林,把一棵树的根结点去掉,就变成了三棵树,就是一个普通的森林,
森林加上一个双亲结点,就变成了一颗树

线性结构和树形结构的比较

在这里插入图片描述

二叉树的定义

起因

在这里插入图片描述

定义

在这里插入图片描述
注意 子树有左右之分,并且次序不能颠倒,根可以有空的左右子树

注意
在这里插入图片描述
二叉树:哪怕其中一个子树是空的 那么另一个子树也得在自己位置 并且区分左右
树:不区分左右,其中一个子树为空时,另一个只有一个位置
在这里插入图片描述

在这里插入图片描述

案例引入

前缀码编码

在这里插入图片描述

表达式的实现

在这里插入图片描述

二叉树的抽象类型定义

在这里插入图片描述
在这里插入图片描述
创建二叉树时,根据definition来构造 而definition的值分别对应着三个不同的遍历方式

二叉树的性质和存储结构

二叉树的性质

在这里插入图片描述
直接假设二叉树是满二叉树 也就是直接计算最多情况下的结点数,就是“至多”的结点数

第i层 那就是求等比数列的常数项 也就是a1*(q的n-1次方) a1是1
在这里插入图片描述
每层至少一个

在这里插入图片描述
等比数列求和

在这里插入图片描述
一共最少有k个

在这里插入图片描述
度为2:也就是有两个孩子的结点

在这里插入图片描述
证明:1.以总边数为桥梁
2.从下往上分析:每个结点头上都连着一个边,只有根结点没有,所以 总边数B=n-1(n是总结点数)
3.从上往下分析:B=2n2+1n1
(n2、n1、分别表示度为2和度为1的结点数)
4.以B为桥梁 带入n=n2+n1+n0

二叉树的特殊形式

满二叉树

在这里插入图片描述
在这里插入图片描述
满二叉树 必须每个位置都有结点 每层都要满 叶子结点必须都在最后一层

完全二叉树

在这里插入图片描述
在这里插入图片描述
要从满二叉树中连续的去掉元素而不修改 也就是编号位置不能变 结点中存放的元素也不能变 就是将完全二叉树映射到满二叉树时 没有异常的地方 可以残缺 但不可以异常 并且 一定要从左往右是连续的 不能有缺口

在这里插入图片描述

完全二叉树的两个性质

在这里插入图片描述
因为是完全二叉树 去掉最后一层 就是满二叉树 补全最后一层 也是满二叉树 所以 可以利用满二叉树的性质来构造一个不等式,

去掉最后一层 就是满二叉树 那么不等式左边就是k-1层时的总结点数
补全最后一层 就是满二叉树 那么不等式右边就是k层时的总结点数

之后简化不等式 最后一步将小于号改成去小于x的最大整数

在这里插入图片描述
因为是完全二叉树 去掉最后一层 就是满二叉树 补全最后一层 也是满二叉树 所以 可以利用满二叉树的性质来构造一个不等式,之后简化不等式 最后一步将小于号改成去小于x的最大整数

在这里插入图片描述
总结来说 除了根结点
其他结点:双亲结点的编号是【i/2】
左孩子结点是2i
右孩子结点是2i+1

如果左右孩子的编号超出了最大结点数 那么就是孩子不存在

二叉树的存储结构

顺序存储结构

在这里插入图片描述
按照满二叉树的位置定义编号 再定义一个数组 编号对应数组下标
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述
空值 数组位置不能缩进 仍然保留 数值为空
所以就造成了空间的浪费
在这里插入图片描述

链式存储结构

在这里插入图片描述

在这里插入图片描述
一般会有一个头指针指向根结点,上面的结构体是对结点的定义

在这里插入图片描述
在这里插入图片描述
除了根节点 其他结点一定有双亲 那么每个双亲肯定会牺牲一个链域来存放孩子的地址 所以 空指针数目是2n-(n-1)
在这里插入图片描述

遍历二叉树

简介

在这里插入图片描述
分类
在这里插入图片描述

在这里插入图片描述
在这里插入图片描述
遍历每一个子树时 将子树也按照整棵树的遍历方式遍历 ,也就是以根结点为参考 转换根结点的参考

先序

在这里插入图片描述
先以整个树为参考 先访问根结点
之后访问左子树:这时将左子树的B 看成根结点 继续采用先序的访问方式来访问B的左子树 依次类推 直到访问到左右子树为空的叶子结点 从而完成对左子树的访问
最后访问右子树:这时将右子树中的D看成根结点 继续采用先序的访问方式来访问D的左子树 依次类推递归 直到访问到左右子树为空的叶子结点 从而完成对右子树的访问

中序

在这里插入图片描述
先访问左子树:这时将左子树的B 看成根结点 继续采用先序的访问方式来访问B的左子树 依次类推 直到访问到左右子树为空的叶子结点 从而完成对左子树的访问

后序

在这里插入图片描述

案例
在这里插入图片描述

一级目录

二级目录

二级目录

二级目录

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

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

相关文章

ubuntu目录分析

在Ubuntu根目录下,以下是一些常见文件夹的含义: /bin:存放可执行文件,包含一些基本的命令和工具。 /boot:存放启动时所需的文件,如内核和引导加载程序。 /dev:包含设备文件,用于与硬…

IntelliJ IDEA 2023.2 新版本,拥抱 AI

IntelliJ IDEA 近期连续发布多个EAP版本,官方在对用户体验不断优化的同时,也新增了一些不错的功能,尤其是人工智能助手补充,AI Assistant,相信在后续IDEA使用中,会对开发者工作效率带来不错的提升。 以下是…

Ai创作系统ChatGPT源码搭建教程+附源码

系统使用Nestjs和Vue3框架技术,持续集成AI能力到本系统! 更新内容: 同步官方图片重新生成指令 同步官方 Vary 指令 单张图片对比加强 Vary(Strong) | Vary(Subtle) 同步官方 Zoom 指令 单张图片无限缩放 Zoom out 2x | Zoom out 1.5x 新增GP…

移动IP的原理

目的 使得移动主机在各网络之间漫游时,仍然能保持其原来的IP地址不变 工作步骤 代理发现与注册 主机A:主机A移动到外地网络后,通过“代理发现协议”,与外地代理建立联系,并从外地代理获得一个转交地址,…

PTA 1076 Forwards on Weibo

个人学习记录,代码难免不尽人意。 Weibo is known as the Chinese version of Twitter. One user on Weibo may have many followers, and may follow many other users as well. Hence a social network is formed with followers relations. When a user makes a …

Nginx动静分离、资源压缩、负载均衡、黑白名单、防盗链等实战

一、前言 Nginx是目前负载均衡技术中的主流方案,几乎绝大部分项目都会使用它,Nginx是一个轻量级的高性能HTTP反向代理服务器,同时它也是一个通用类型的代理服务器,支持绝大部分协议,如TCP、UDP、SMTP、HTTPS等。 二、…

SSD市场上演大洗牌,61TB豪华「别墅」横空出世

最近几年 SSD 售价是肉眼可见的下降,相信大伙儿没少跟着喝汤吃肉吧。 有人将这些变化归结于全球市场过饱和,需求下滑。 也有人认为国产 NAND 闪存崛起是压垮 SSD 高昂售价的最后一根稻草。 在小忆看来,不论是需求矛盾还是国产崛起不过是其中…

中国计算机学会推荐国际学术期刊(网络与信息安全)

序号刊物简称刊物全称分类类型专业领域1TDSCIEEE Transactions on Dependable and Secure ComputingA期刊网络与信息安全2TIFSIEEE Transactions on Information Forensics and SecurityA期刊网络与信息安全3Journal of CryptologyA期刊网络与信息安全1TISSECACM Transactions …

Mysql适用于初学者的前期入门资料

文章目录 前言一、SQL语句分类二、SQL语句的书写规范三.数据库操作四、MySQL字符集1、问题① 五、UTF8和UTF8MB4的区别六、数据库对象七、数据类型八、表的基本创建1、创建表2、查看表3、删除表4、修改表结构5、复制表的结构 九、数据库字典十、表的约束1、非空约束(NOT NULL)2…

在简历上写了“精通”后,拥有工作经验的我被面试官问到窒息

前言 如果有真才实学,写个精通可以让面试官眼前一亮! 如果是瞎写?基本就要被狠狠地虐一把里! 最近在面试,我现在十分后悔在简历上写了“精通”二字… 先给大家看看我简历上的技能列表: 熟悉软件测试理论基…

2023年深圳杯数学建模B题电子资源版权保护问题

2023年深圳杯数学建模 B题 电子资源版权保护问题 原题再现: 版权又称著作权,包括发表权、署名权、修改权、保护作品完整权、复制权、发行权、出租权、展览权、表演权、放映权、广播权、信息网络传播权、摄制权、改编权、翻译权、汇编权及应当由著作权人…

微信如何提高回复信息速度?

规范流程话术有什么用?为了提高回复客户的效率和质量,可以事先设计好的一套标准化的对话模板。它通常包括多个环节和问题,帮助客服人员或销售人员在与客户沟通时,按照标准化的流程进行,以提高工作效率和客户满意度。 如…

数据中台系列1:redis 安装使用之 windows 篇

1、概述 redis官网上的安装包没有基于 window 系统的,但是有第三方开发的包,可以使用 redis,虽然版本低了点。因此,想在本机安装 redis 有以下办法: a、在 window 环境中安装低版本的 redis for window。因为作者已经…

vue 拦截 v-html 中 a 标签 href 跳转

记录 template 中 给需要 拦截的 代码片段加上click 方法 click“targetNodeNameClick” <p class"message-content message-content-text" v-html"replaceURLWithHTMLLinks(getText(message))" click"targetNodeNameClick"></p>然…

服务器出现丢包的原因103.88.35.x

网站主要目的是达到企业和客户紧密联系&#xff0c;提升客户对企业形象的认知度的效果&#xff0c;若租用的服务器不稳定&#xff0c;不仅影响网站的运行&#xff0c;对于网站搜索引擎优化以及用户体验等也有很大的影响。下面是服务器出现丢包不稳定的原因&#xff0c;一起来看…

vue中使用vab-magnifier实现放大镜效果

效果图如下&#xff1a; 1. 首先&#xff0c;使用npm或yarn安装vab-magnifier插件&#xff1a; npm install vab-magnifier或 yarn add vab-magnifier2. 在Vue组件中引入vab-magnifier插件&#xff1a; import VabMagnifier from vab-magnifier; import vab-magnifier/lib…

Element UI如何自定义样式

简介 Element UI是一套非常完善的前端组件库&#xff0c;但是如何个性化定制其中的组件样式呢&#xff1f;今天我们就来聊一聊这个 举例 就拿最常见的按钮el-button来举例&#xff0c;一般来说默认是蓝底白字。效果图如下 可是我们想个性化定制&#xff0c;让他成为粉底红字应…

网络云存储服务器,数据库服务器|PetaExpress

云存储服务器是什么&#xff1f; 云存储服务器是一种在线存储(英语:Cloud storage&#xff09;该模式是将数据存储在通常由第三方托管的多个虚拟服务器上&#xff0c;而不是独家服务器上。 云存储服务器有几种结构 架构方法分为两类&#xff1a;一类是通过服务进行架构&…

ElasticSearch_学习笔记

一、初始elasticsearch 什么是elasticsearch&#xff1f; 一个开源的分布式搜索引擎&#xff0c;可以用来时限搜素、日志统计、分析、系统监控等功能。什么是elasitc stack&#xff08;ELK&#xff09;&#xff1f; 是以elasticsearch为核心的技术栈&#xff0c;包括 beats、L…

JAVA基础原理篇_1.1—— 关于JVM 、JDK以及 JRE

目录 一、关于JVM 、JDK以及 JRE 1. JVM 2. JDK 3. JRE 二、为什么说 Java 语言“编译与解释并存”&#xff1f; 2.2 将高级编程语言按照程序的执行方式分为两种&#xff1a; 2.2 Java的执行过程&#xff1a; 2.3 所以为什么Java语言“编译与解释"共存&#xff1a…