数据结构:树的基本概念(二叉树,定义性质,存储结构)

news2025/1/16 14:03:31

目录

  • 1.树
    • 1.基本概念
      • 1.空树
      • 2.非空树
    • 2.基本术语
      • 1.结点之间的关系描述
      • 2.结点、树的属性描述
      • 3.有序树、无序树
      • 4.森林
    • 3.树的常考性质
  • 2.二叉树
    • 1.基本概念
    • 2.特殊二叉树
      • 1.满二叉树
      • 2.完全二叉树
      • 3.二叉排序树
      • 4.平衡二叉树
    • 3.常考性质
    • 4.二叉树的存储结构
      • 1.顺序存储
      • 2.链式存储

1.树

1.基本概念

树是n (n>=0)个结点的有限集合,n =0时,称为空树,这是一种特殊情况。
在任意一棵非空树中应满足:
①有且仅有一个特定的称为根的结点。
②当n>1时,其余结点可分为m (m>0)个互不相交的有限集合T1,T2…… Tm,其中每个集合本身又是一棵树,并且称为根结点的子树
③树是一种递归定义的数据结构。

1.空树

结点数为0的树。

2.非空树

①有且仅有一个根节点
②没有后继的结点称为“叶子结点”(或终端结点)
③有后继的结点称为“分支结点”(或非终端结点)
④除了根节点外,任何一个结点都有且仅有一个前驱
⑤每个结点可以有0个或多个后继。

2.基本术语

1.结点之间的关系描述

①祖先结点
②子孙结点
③双亲结点(父节点)
④孩子结点
⑤兄弟结点
⑥堂兄弟结点
⑦路径:只能从上而下
⑧路径长度:经过几条边

2.结点、树的属性描述

①结点的层次(深度):从上往下数(默认从1开始)
②结点的高度:从下往上数
③树的高度(深度):总共多少层
结点的度:有几个孩子(分支)
树的度:各结点的度的最大值

3.有序树、无序树

①有序树――逻辑上看,树中结点的各子树从左至右是有次序的,不能互换
②无序树――逻辑上看,树中结点的各子树从左至右是无次序的,可以互换

4.森林

森林是m ( m≥0)棵互不相交的树的集合。

3.树的常考性质

结点数=总度数+1

②度为m的树、m叉树的区别
树的度:各结点的度的最大值
m叉树:每个结点最多只能有m个孩子的树
在这里插入图片描述

③度为m的树第i层至多有 m i − 1 m^{i-1} mi1个结点( i≥1)
④高度为h的m叉树至多有 m h − 1 m − 1 \frac{m^h-1}{m-1} m1mh1个结点。(等比数列求和)
⑤高度为h的m叉树至少有h个结点。
高度为h、度为m的树至少有h+m-1个结点。
⑥具有n个结点的m叉树的最小高度 [ l o g m ( n ( m − 1 ) + 1 ) ] [log_m^{(n(m - 1)+ 1)}] [logm(n(m1)+1)](向上取整)

2.二叉树

1.基本概念

二叉树是n (n≥0)个结点的有限集合:
①或者为空二叉树,即n = 0。
②或者由一个根结点和两个互不相交的被称为根的左子树和右子树组成。
左子树和右子树又分别是一棵二叉树。
特点:①每个结点至多只有两棵子树②左右子树不能颠倒(二叉树是有序树)

2.特殊二叉树

1.满二叉树

一棵高度为h,且含有 2 h − 1 2^h-1 2h1个结点的二叉树
在这里插入图片描述

特点:
①只有最后一层有叶子结点
不存在度为1的结点
③按层序从1开始编号,结点i的左孩子为2i,右孩子为2i+1;
结点i的父节点为[i/2] (向下取整)

2.完全二叉树

当且仅当其每个结点都与高度为h的满二叉树中编号为1~n的结点一一对应时,称为完全二叉树。

特点:
①只有最后两层可能有叶子结点
最多只有一个度为1的结点
③按层序从1开始编号,结点i的左孩子为2i,右孩子为2i+1;
④i≤ [n/2]为分支结点,i>[n/2]为叶子结点(向下取整)

3.二叉排序树

一棵二叉树或者是空二叉树,或者是具有如下性质的二叉树:
左子树上所有结点的关键字均小于根结点的关键字;
右子树上所有结点的关键字均大于根结点的关键字。
左子树和右子树又各是一棵二叉排序树。(左小右大)
在这里插入图片描述

二叉排序树可用于元素的排序、搜索

4.平衡二叉树

树上任一结点的左子树和右子树的深度之差不超过1
平衡二叉树能有更高的搜索效率。
在这里插入图片描述

3.常考性质

①:设非空二叉树中度为0、1和2的结点个数分别为n0,n1,和n2,则n0= n2+ 1。(叶子结点比二分支结点多一个)
树的结点数=总度数+1
②二叉树第i层至多有 2 i − 1 2^{i-1} 2i1个结点( i≥1)
③高度为h的二叉树至多有 2 h — 1 2^h —1 2h—1个结点(满二叉树)
④具有n个(n >0)结点的完全二叉树的高度h [ l o g 2 ( n + 1 ) ] ( 向上取整 ) 或 [ l o g 2 n ] + 1 (向下取整) [log_2^{(n + 1)}](向上取整)或[log_2^n]+ 1(向下取整) [log2(n+1)](向上取整)[log2n]+1(向下取整)
⑤若完全二叉树有2k个(偶数)个结点,则必有n1=1,n0 = k, n2 = k-1
若完全二叉树有2k-1个(奇数)个结点,则必有n1=0,n0 = k, n2 = k-1.

4.二叉树的存储结构

1.顺序存储

二叉树的顺序存储中,一定要把二叉树的结点编号与完全二叉树对应起来
利用完全二叉树,父节点与孩子结点的关系,存放在指定数组下标。
在这里插入图片描述

最坏情况:高度为h 且只有h个结点的单支树(所有结点只有右孩子),也至少需要 2 h − 1 2^h-1 2h1个存储单元。
结论:二叉树的顺序存储结构,只适合存储完全二叉树。

2.链式存储

n个结点的二叉链表共有n+1个空链域。

在这里插入图片描述

使用三叉链表――方便找父结点。

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

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

相关文章

MYSQL5.7和MYSQL8配置主从

1、创建专门主从的账号 #登录 mysql -u root -p #创建用户 我这里用户名为test5,注意这里的ip是从库服务器的ip CREATE USER test5192.168.1.20 IDENTIFIED WITH mysql_native_password BY xxxxx; #给主从复制账号授权 grant replication slave on *.* to test5192…

Java程序设计2023-第八次上机练习

8-1简单文本编辑器 编写简单文本编辑器,该程序可以新建、打开、编辑和保存文本文件。当用户点击New时,新建一个文件,用户可以编辑文件内容,然后点击Save保存文件。用户点击Open时,选择一个已有文件,然后可…

SDWAN(Software Defined Wide Area Network)概述与优势分析

文章目录 SDWAN简介SDWAN技术优势简化网络部署和维护安全传输灵活网络拓扑极致体验 SD-WAN关联技术STUNIPsec智能选路SaaS路径优化 典型组网多总部分支组网云管理组网 推荐阅读 SDWAN简介 SDWAN(Software Defined Wide Area Network,软件定义广域网&…

Revit 平面的圆弧,空间的椭圆弧

大家对Revit的空间曲线那么理解,如何用代码创建空间的椭圆弧,,上看是圆弧,正面看是椭圆? 直接放代码: Document doc = commandData.Application.ActiveUIDocument.Document; Autodesk.Revit.DB.XYZ center = new Autodesk.Revit.DB.XYZ(0, 0, 0); …

Vue3 源码解读系列(三)——组件渲染

组件渲染 vnode 本质是用来描述 DOM 的 JavaScript 对象,它在 Vue 中可以描述不同类型的节点,比如:普通元素节点、组件节点等。 vnode 的优点: 抽象:引入 vnode,可以把渲染过程抽象化,从而使得组…

漏刻有时百度地图API实战开发(4)显示指定区域在移动端异常的解决方案

漏刻有时百度地图API实战开发(1)华为手机无法使用addEventListener click 的兼容解决方案漏刻有时百度地图API实战开发(2)文本标签显示和隐藏的切换开关漏刻有时百度地图API实战开发(3)自动获取地图多边形中心点坐标漏刻有时百度地图API实战开发(4)显示指定区域在移动端异常的解…

Linux文件系统——重定向

文章目录 1. 文件描述符分配规则2. 重定向接口dup2自定义shell重定向(补充) 3. 标准输出和标准错误4. 如何理解一切接文件 本章代码gitee地址:文件重定向 1. 文件描述符分配规则 文件描述符的分配规则是从0下标开始,寻址最小的没有使用的数组位置&#…

飞机社交软件开发:重新定义社交媒体的空中交互体验

【导语】 随着互联网技术的快速发展,社交媒体平台的界限也逐渐模糊。飞机社交软件应运而生,打破传统的地面社交模式,为空中旅行的旅客提供全新的交流平台。本文将从市场需求、技术实现、用户体验和未来发展等方面,深入探讨飞机社交…

探索内存函数的奥秘【memcpy、memmove、memset、memcmp】

目录 一,memcpy函数 1,memcpy函数简介 2,memcpy函数的原理 3,memcpy函数的用法 4,注意事项 5,memcpy函数模拟实现 二,memmove函数 1,memmove函数简介 2,memmove函…

文件夹批量改名技巧:简单步骤,实现文件夹随机重命名

在日常生活和工作中,经常需要处理大量的文件夹,需要对其进行有效的管理。在这些情况下,文件夹的命名就变得非常重要。一个好的命名策略可以快速找到所需的文件夹,也可以帮助更好地组织文件。然而,手动为每个文件夹重命…

Ocelot:.NET开源API网关提供路由管理、服务发现、鉴权限流等功能

随着微服务的兴起,API网关越来越常见。API网关是连接应用程序和用户之间的桥梁,就像一个交通指挥员,负责处理所有进出应用的数据和请求,确保安全、高效、有序地流通。 今天给大家推荐一个.NET开源API网关。 01 项目简介 Ocelot…

通过easyexcel导出数据到表格

这篇文章简单介绍一下怎么通过easyexcel做数据的导出,使用之前easyui构建的歌曲列表crud应用,添加一个导出按钮,点击的时候直接连接后端接口地址,在后端的接口完成数据的导出功能。 前端页面完整代码 let editingId; let request…

智链引擎CEO李智:游戏化增长中台,让裂变营销快十倍、便宜十倍、好十倍丨数据猿专访...

大数据产业创新服务媒体 ——聚焦数据 改变商业 双十一电商大战一触即发,各个垂类的App也都希望能够借力双十一营销季,实现用户和营收双增长。MarTech在这个风口上,又成为2B赛道关注的焦点。 业内人士指出,MarTech的引入催生营销…

毅速丨金属3D打印零件品质受哪些因素影响

金属3D打印的零件品质受到多个因素的影响,包括设备、材料、工艺、后处理等。不同厂商的品质差别大致由以下几个方面造成。 一、设备性能差异: 不同厂商的金属3D打印设备可能存在性能上的差异,包括激光功率、扫描速度、打印精度、稳定性等。这…

【教3妹学编程-算法题】765. 情侣牵手

3妹:2哥2哥,你看到新闻了吗?襄阳健桥医院院长 公然“贩卖出生证明”, 真是太胆大包天了吧。 2哥 : 我也看到新闻了,7人被采取刑事强制措施。 就应该好好查查他们, 一查到底! 3妹:真的…

Python:词法分析(行结构与显式、隐式行拼接)

相关阅读 Pythonhttps://blog.csdn.net/weixin_45791458/category_12403403.html?spm1001.2014.3001.5482 1、逻辑结构 一个Python程序由许多逻辑行组成,字面意义上的一行指的是末尾有换行符(\n),但在不同的情况下,行末尾的换行符(\n)可能有…

如何选择一个可靠的爬虫代理服务商?技术人员都需要知道

我身边从事大数据相关行业的朋友最近告诉我,自己新招的小伙伴工作效率很低,很多最基础的工具都不会选择,经常因为代理IP不可靠导致工作出错。 听完这些我才意识到,在这个大数据时代,还是有很多新手在进行网络爬取任务…

Elasticsearch 和 Go 中使用向量搜索寻找地鼠

作者:CARLY RICHMOND,LAURENT SAINT-FLIX 就像动物和编程语言一样,搜索也经历了不同实践的演变,很难在其中做出选择。 加入我们的第二部分,通过 Elasticsearch 中的矢量搜索在 Go 中狩猎地鼠(gophers&…

沁恒微WCH592程序烧录问题

在使用wch592蓝牙芯片时,使用WCHISPStudio_V3.60工具烧录hex固件时,识别设备OK, 擦除flash OK,就是在烧录时一直报错,错误如下: 原因是:代码和数据保护模式没有启用。 改为如下:

Git可视化界面的操作,SSH协议的以及IDEA集成Git

目录 一. Git可视化界面的操作 二. gitee的ssh key 2.1 SSH协议 2.2 ssh key 三. IDEA集成Git 3.1 分享项目 3.2 下载项目 一. Git可视化界面的操作 上一篇博客只用到了git的命令窗口,现在就来看看可视化窗口要怎么操作。 点击Git GUI Here GUI界面 在g…