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

目录

  • 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.hqwc.cn/news/176632.html

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

相关文章

应用在唱放一体音响麦克风中的投影K歌模组

从十年前智能手机和移动互联网开始兴起,手机K歌(全民K歌、唱吧等)娱乐潮流成为年轻人的新宠,衍生出全新的手机K歌麦克风。到如今家庭智能电视、智能娱乐影院设备普及,家庭、聚会、户外K歌新娱乐潮流兴起,拓…

智能电网线路阻抗模拟的工作原理

智能电网线路阻抗模拟是一种通过模拟电网线路的阻抗特性来实现电网故障检测和定位的技术。智能电网系统通过安装在电网线路上的传感器,实时采集线路上的电流、电压等参数,并将这些数据传输到监控中心。监控中心接收到传感器采集的数据后,对数…

基于JAVA SpringBoot和HTML美食网站博客程序设计

摘要 美食网站是一个提供各种美食信息和食谱的网站,旨在帮助用户发现、学习和分享美食。旨在探讨美食网站在现代社会中的重要性和影响。随着互联网的普及,越来越多的人开始使用美食网站来获取各种美食信息和食谱。这些网站不仅提供了方便快捷的搜索功能&…

小型洗衣机哪个牌子质量好?性价比高的迷你洗衣机推荐

这两年内衣洗衣机可以称得上较火的小电器,小小的身躯却有大大的能力,一键可以同时启动洗、漂、脱三种全自动为一体化功能,在多功能和性能的提升上,还可以解放我们双手的同时将衣物给清洗干净,让越来越多小伙伴选择一款…

计算机网络期末复习-Part5

1、CRC计算 看例题:待发送序列为101110,生成多项式为X31,计算CRC校验码 先在待发送序列末尾添加与生成多项式次数相同的零,在上述例子中,生成多项式是X^3 1,所以需要添加3个零,待发送序列变成…

Redis最新2023年面试题高级面试题及附答案解析(1)【Redis最新2023年面试题高级面试题及附答案解析-第三十八刊】

文章目录 Redis最新2023年面试题高级面试题及附答案解析(1)01、为什么 Redis 需要把所有数据放到内存中?02、查看 Redis 使用情况及状态信息用什么命令?03、MySQL里有2000w数据,Redis 中只存20w的数据,如何保证 Redis 中的数据都是…

如何选择正确的SSL证书?

SSL证书已经成为网站安全管理的重要部分,但是市场上SSL证书种类繁多,很多新手在初次购买时都会感到困惑。下面我们就一起来看看如何快速地选择正确的SSL证书。 第一步:明确SSL证书的主要分类 SSL证书主要有三种类型:单域名证书、…

openGauss学习笔记-122 openGauss 数据库管理-设置密态等值查询-密态支持函数/存储过程

文章目录 openGauss学习笔记-122 openGauss 数据库管理-设置密态等值查询-密态支持函数/存储过程122.1 创建并执行涉及加密列的函数/存储过程 openGauss学习笔记-122 openGauss 数据库管理-设置密态等值查询-密态支持函数/存储过程 密态支持函数/存储过程当前版本只支持sql和P…

系列八、Mybatis一对多查询,只查询出了一条记录

一、Mybatis一对多查询,只查询出了一条记录 1.1、问题说明 典型的权限管理框架的数据库表中,一般会存在这样3种角色的表,即用户表、角色表、用户角色关联表,表设计好之后,往这三张表中初始化了一些测试数据&#xff0…

ffmpeg安装教程(windows、Linux下python环境)

本文旨在向大家介绍ffmpeg在Windows和Linux系统中的安装方法。 目录 一、Windows 安装 ffmpeg1.1 官网下载 ffmpeg 运行程序1.2 环境配置1.3 测试 二、Linux 安装ffmpeg2.1 Linux中安装ffmpeg2.2 python环境安装 ffmpeg2.1.1 为什么要介绍这个2.1.1 成功安装示例 一、Windows …

自然语言处理(NLP)-spacy简介以及安装指南(语言库zh_core_web_sm)

spacy 简介 spacy 是 Python 自然语言处理软件包,可以对自然语言文本做词性分析、命名实体识别、依赖关系刻画,以及词嵌入向量的计算和可视化等。 1.安装 spacy 使用 “pip install spacy" 报错, 或者安装完 spacy,无法正…