24考研数据结构-树与二叉树的基本概念

news2024/9/22 5:21:17

目录

  • 第五章:树
  • 5.1树的基本概念
    • 5.1.1树的定义
    • 5.1.2 基本术语
    • 5.1.3 树的性质
  • 5.2二叉树的概念
    • 5.2.1 二叉树的定义与特性
    • 5.2.2 几种特殊的二叉树
    • 5.2.3 二叉树的性质
    • 5.2.4 完全二叉树的性质
    • 5.2.5 二叉树的存储结构
      • 1. 顺序存储
      • 重要的基本操作
      • 非完全二叉树
      • 2. 链式存储
      • 逆向寻找父节点

第五章:树

5.1树的基本概念

节点数 = 度的和+1或者节点数

5.1.1树的定义

在这里插入图片描述

树是n个结点的有限集

  • 空树:n=0
  • 根结点、分支结点、叶子结点
  • 非空树的特性
  • 子树

在n个结点的树中有n-1条边

5.1.2 基本术语

结点之间的关系描述

  • 祖先、子孙、双亲、兄弟结点(亲兄弟同父节点、堂兄弟同一层次)
  • 路径(路径只有从上往下,需要从下往上的就不存在路径
  • 路径长度(树根到每个节点的路径长度的总和

结点、树的属性描述

  1. 结点的层次(深度,默认从1)——从上往下
  2. 结点的高度——从下往上
  3. 树的高度——总共多少层
  4. 结点的度——有几个孩子
  5. 树的度——各结点的度的最大值

有序树(家谱,从左到右有次序不可以互换)、无序树(左右位置没有逻辑关系,可以互换)

森林(多颗互不相交的树的集合,允许有空森林,跟树一样节点数可以为0

森林与树的转换

  • 当森林的树拥有共同根节点就是一棵树

5.1.3 树的性质

  • 树中的结点数等于所有结点的度数之和加1。(这个1是根节点,因为每个节点的度代表他的直接子节点个数,这些全部相加就差根节点的个数也就是1

  • 在这里插入图片描述

  • 度为m的树第i层上至多有m^i-1个结点(这是因为树的度代表最多一个节点拥有的最多的子节点个数,所以至多就是指数级别的关系

度为m的数、m叉数的区别

  • m叉树,只要每个节点的孩子数小于等于m,并且不要求存在一个节点的度等于m,所以一棵二叉树也一定是一棵三叉树,四叉树·······
  • 度为m的树,一定要有一个节点的度是m,所以不可能是空树,对于m叉树来说就可以是空树
    在这里插入图片描述
    在这里插入图片描述
    在这里插入图片描述
    度为m,有n个节点的树:树的高度最高是,n-(m+1)+2 = n-m+1
    在这里插入图片描述

5.2二叉树的概念

5.2.1 二叉树的定义与特性

定义:
二叉树是n(n>=0)个结点的有限集,它或者是空集(n=0),或者由一个根结点及两颗互不相交的分别称作这个根的左子树和右子树的二叉树组成。

特点:

  • 每个结点最多有俩孩子(二叉树中不存在度大于2的结点)。
  • 二叉树可以是空集合,根可以有空的左子树和空的右子树。
  • 二叉树有左右之分,次序不能颠倒。(有序,且子树也是二叉树)
  • 在这里插入图片描述

5.2.2 几种特殊的二叉树

  1. 满二叉树:一颗深度为k且有2^k-1个结点的二叉树称为满二叉树。每一层上的结点数都达到最大。叶子全部在最低层。

  2. 完全二叉树:深度为k的具有n个结点的二叉树,当且仅当其每一个结点都与深度为k的满二叉树中编号为1~n的结点一 一对应时,称之为完全二叉树。(缺少的只会是最后一个节点,递归这种缺少才能满足,就是不能缺少8号节点,因为这样8后边的所有节点都会变换序号,与满二叉树不一样了
    在这里插入图片描述
    完全二叉树的最多且唯一一个度为1的节点一定有的是左孩子

  3. 二叉排序树
    在这里插入图片描述

  4. 平衡二叉树

在这里插入图片描述

5.2.3 二叉树的性质

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

5.2.4 完全二叉树的性质

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

5.2.5 二叉树的存储结构

1. 顺序存储

#define MaxSize 100

struct TreeNode{
   ElemType value; //结点中的数据元素
   bool isEmpty;   //结点是否为空
}

main(){
   TreeNode t[MaxSize];
   for (int i=0; i<MaxSize; i++){
      t[i].isEmpty = true;
   }
}


在这里插入图片描述

重要的基本操作

在这里插入图片描述
二叉树的顺序存储中,一定要把二叉树的结点编号与完全二叉树对应起来

非完全二叉树

在这里插入图片描述

2. 链式存储

每个节点有两个指针域,n个节点就有2n个指针域,但是只有n-1个指针域指向n-1个子节点,所以有n+1个空指针域
在这里插入图片描述

//二叉树的结点

struct ElemType{
   int value;
};

typedef struct BiTnode{
   ElemType data;          //数据域
   struct BiTNode *lchild, *rchild; //左、右孩子指针
}BiTNode, *BiTree;

//定义一棵空树
BiTree root = NULL;

//插入根节点
root = (BiTree) malloc (sizeof(BiTNode));
root -> data = {1};  //{}是必须的,因为这里对结构体初始化
root -> lchild = NULL;
root -> rchild = NULL;

//插入新结点
BiTNode *p = (BiTree) malloc (sizeof(BiTNode));
p -> data = {2};
p -> lchild = NULL;
p -> rchild = NULL;
root -> lchild = p; //作为根节点的左孩子


逆向寻找父节点

三叉链表
在这里插入图片描述

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

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

相关文章

Flowable-子流程-事件子流程

目录 定义图形标记XML内容使用示例视频教程 定义 事件子流程是 BPMN 2.0 中加入的新元素&#xff0c;它是指通过事件触发的子流程&#xff0c;可以存在于在流程 级别&#xff0c;或者任何子流程级别。和内嵌子流程类似&#xff0c;把一系列的活动归结到一起处理&#xff0c;不…

vue: dev-tools控制台不显示问题

安装好dev-tools 导致控制台不显示的原因&#xff1a; 使用的vue压缩版本 vue.min.js。配置问题导致 1.查看public/index.html中引用的vue是否为压缩版本&#xff08;vue.min.js&#xff09;。 需要把压缩版换成vue.js <% if (process.env.NODE_ENV production) { %> &…

C语言中char、short、int、long各占多少字节

1byte 8bit 一个字节占8个二进制位 windows操作系统&#xff0c;32位机中&#xff0c; char&#xff1a; 1个字节 short&#xff1a; 2个字节 int&#xff1a; 4个字节 long&#xff1a; 4个字节 以下是windows操作系统&#xff0c;32位机下的代码测试结果&#xff08;3…

嵌入式高星github项目仓库

awesome-embedded soft-and-hard freemodbus

C# 外观模式

概述 外观模式&#xff08;Facade Pattern&#xff09;是一种结构型设计模式&#xff0c;它提供了一个统一的接口&#xff0c;用于访问子系统中的一组接口。外观模式隐藏了子系统的复杂性&#xff0c;使得客户端可以通过简单的接口与子系统进行交互。 外观模式定义了一个高层…

计算机体系结构知识点大全

计算机体系结构知识点大全 计算机体系结构Chapter-1&#xff1a;计算机系统结构的基本概念Chapter-2&#xff1a;指令系统Chapter-3&#xff1a;流水线技术Chapter-4&#xff1a;存储层次Chapter-5&#xff1a;输入输出系统Chapter-6&#xff1a;多处理机Chapter-7&#xff1a;…

EXCEL,查询多条件数字/文本内容的多方法总结

目录 1 问题&#xff1a;如何根据多条件查询到想要的内容 2 方法1&#xff1a; sumif() 和sumifs() 只适合查找数字&#xff0c;不适合查找文本字符串类型的内容 3 使用lookup(1,0/(条件1*条件2*....),结果查询区域) 的方法 4 vlookup()if()数组公式 5 使用 index()match…

STM32按键控制LED灯-HAL库

前言 空窗了一年&#xff0c;重头再来点个灯吧&#xff0c;本篇文章将主要给大家讲解按键点灯 一、原理图设计 LED0-LED2 --------> PA0-PA2引脚 KEY1 ---------> PA3引脚 二、CubeMX的设置 LED选择GPIO一次将PA0、PA1、PA2设置为GPIO_Output&#xff0c;输出电平为…

向 Maven 中央仓库上传一个修改过的基于jeecg的autoPOI的 jar包记录

1、注册https://issues.sonatype.org/账号 下面就代表注册好了&#xff0c;同时提交的工单也通过了 2、这里主要是goupId 需要进行认证&#xff0c;需要到域名注册商近一个txt的解析&#xff0c;以便确保这个是你的 通过下面来验证你的域名信息&#xff0c;这里主要是上面的工…

Permute 3 for mac音视频格式转换

Permute是一款Mac平台上的媒体格式转换软件&#xff0c;由Chaotic Software开发。它可以帮助用户快速地将各种音频、视频和图像文件转换成所需格式&#xff0c;并提供了一些常用工具以便于用户进行编辑和处理。 Permute的主要特点包括&#xff1a; - 支持大量格式&#xff1a;支…

工程监测仪器振弦传感器信号转换器(VTI104_DIN)

工程监测仪器振弦传感器信号转换器&#xff08;VTI104_DIN&#xff09; 振弦传感器信号转换器&#xff0c;简称VTI104_DIN&#xff0c;是一种用于转换振弦传感器信号的电子设备。该设备可以将振弦传感器产生的模拟信号转换成标准的电压或电流输出&#xff0c;从而使其可以连接…

将网盘挂载到本地保姆级教程

视频链接&#xff1a;https://www.bilibili.com/video/BV1SA411B7qc Clouddrive2&#xff1a;是一款非常实用的国内网盘服务挂载应用。它支持多种国内知名网盘服务&#xff0c;包括阿里云盘、115云盘、天翼云盘等。通过CloudDrive 2&#xff0c;你可以将这些网盘服务挂载到你的…

中级课程——弱口令(认证崩溃)

文章目录 什么是弱口令密码生成器分类暴力破解万能密码测试环境工具 什么是弱口令 密码生成器 分类 暴力破解 万能密码 or true --测试环境 工具 九头蛇&#xff0c;超级弱口令爆破工具&#xff0c;bp&#xff0c;

Redis的键空间监听功能

文章目录 Redis 键空间通知一、keyspace介绍二、事件通知配置三、不同命令生成的事件四、客户端测试五、Springboot整合Redis键空间监听5.1 方式一5.2 方式二 Redis 键空间通知 一、keyspace介绍 keyspace&#xff08;键空间通知&#xff09;针对指定key发生的一切改动&#…

香港三维模型:基于GIS数据的精确三维城市模型及其周边2023年

基于GIS数据的精确三维城市模型及其周边2023年 包含的文件&#xff1a; 满城&#xff1a;15公里 信息&#xff1a; 仅在影院4D中设置基本卫星纹理 包含卫星/地图纹理 影院制作4d&#xff0c;可在标准渲染器中进行渲染 漫步建筑、树木&#xff08;mograph cloner&#xff…

【无标题】JSP--Java的服务器页面

jsp是什么&#xff1f; jsp的全称是Java server pages,翻译过来就是java的服务器页面。 jsp有什么作用&#xff1f; jsp的主要作用是代替Servlet程序回传html页面的数据&#xff0c;因为Servlet程序回传html页面数据是一件非常繁琐的事情&#xff0c;开发成本和维护成本都非常高…

虹科活动 | 走进宇通客车-汽车新供应链技术展精彩回顾

引言 7月27日&#xff0c;走进宇通客车-汽车新供应链技术展于宇通研发中心成功举办&#xff0c;本次展会中虹科为大家带来了一体化车载天线与车辆GNSS仿真测试方案&#xff0c;感谢您前来探讨与交流&#xff01; 精彩产品一览 车辆GNSS仿真测试方案 虹科高性能GNSS模拟器具有灵…

【二叉树进阶】二叉树经典面试题——最近公共祖先问题

文章目录 1. 二叉树的最近公共祖先1.1 思路1&#xff08;转换为链表相交问题&#xff09;1.2 链表相交问题讲解1.3 思路21.4 思路2AC代码 2. 剑指 Offer 68 - I. 二叉搜索树的最近公共祖先2.1 思路分析2.2 AC代码 3. 普通二叉树求最近公共祖先的优化-转化为路径相交的问题3.1 思…

国产DSP,C2000,QX320F280049,打破TI垄断,支持国产

数字电源&#xff0c;光伏逆变器&#xff0c;微电机&#xff0c;充电桩&#xff0c;家电&#xff0c;机器人专用

Python绘图坐标系映射,对数坐标系

文章目录 对数坐标系自定义映射对数坐标图 对数坐标系 在实际绘图时&#xff0c;如果 x , y x,y x,y这两轴的数据变化速率相差过多&#xff0c;线性的坐标映射将无法展示图形变化的细节&#xff0c;就需要更改坐标系的数字映射逻辑&#xff0c;以获得更具细节的图像。 在matp…