【数据结构】 树与二叉树的基本概念、结构特点及性质
前言:本章内容主要是数据结构中树与二叉树的基本概念、结构特点及性质的引入。
文章目录
- 树的概念
- 树的特点:
- 树的常用术语:
- 树的表示:
- 代码创建:
- 树在实际中的应用:
- 二叉树的概念
- 特殊的二叉树
- 满二叉树
- 完全二叉树
- 二叉树的性质及其推导:
- 练习题:
- 习题1:
- 习题2:
- 习题3:
树的概念
数据结构中的定义的树比较有趣,它是我们所见真实树的倒置,然后再抽象的一种结构,比较有意思。同时使用树这种数据结构,可以描述现实生活中的很多事物,例如家谱、企业的组织架构等等。
树是由n(n>=0)个有限结点组成一个具有层次关系的集合。把它叫做“树”是因为它看起来像一棵倒挂的树,也就是说它是根朝上,而叶朝下的。
树的特点:
1.每个结点有零个或多个子结点;
2.没有父结点的结点为根结点;
3.每一个非根结点只有一个父结点;
4.每个结点及其后代结点整体上可以看做是一棵树,称为当前结点的父结点的一个子树;
树的常用术语:
1.根结点:没有双亲节点的结点
2.孩子节点或子节点:一个节点含有的子树的根节点称为该节点的子节点
3.双亲结点:若一个节点含有子节点,则这个节点称为其子节点的父节点
4.节点的度:一个节点含有的子树的个数称为该节点的度
5.叶结点:度为0的结点称为叶结点,也可以叫做终端结点
6.分支结点:度不为0的结点称为分支结点,也可以叫做非终端结点
7.结点的层次:从根结点开始,根结点的层次为1,根的直接后继层次为2,以此类推
8.结点的层序编号:将树中的结点,按照从上层到下层,同层从左到右的次序排成一个线性序列,把他们编成连续的自然数
9.树的度:树中所有结点的度的最大值
10.树的高度(深度):树中结点的最大层次
11.森林:m(m>=0)个互不相交的树的集合,将一颗非空树的根结点删去,树就变成一个森林;给森林增加一个统一的根结点,森林就变成一棵树
12.兄弟结点:同一双亲结点的孩子结点间互称兄弟结点。
树的表示:
“左孩子右兄弟”表示法
代码创建:
typedef int DataType;typedef struct node
{struct node* child; //指向左孩子结点struct node* brother; //指向下一个兄弟结点DataType data; //结构中的数据域,存储当前结点数据
}node;
树在实际中的应用:
比如文件系统中的目录结构
二叉树的概念
一种特殊的树,见名知意,只有两个分叉的树。特点是二叉树的度最大只能为2,也就是说每个结点的子节点最多只能有两个。
特殊的二叉树
满二叉树
核心点是 “满”
概念:每一层的结点都达到最大值**,且第n层的结点数量符合公式
2^(n-1)
**,层数是从1开始。
1.定义: 高度为h,并且含有(2^h)-1个结点的二叉树
2.对于编号为 i 的结点,如果有双亲,双亲为 i/2 向下取整;如果有左孩子,左孩子编号为 2i,如果有右孩子,右孩子编号为 (2i + 1)
完全二叉树
概念:对于层数(n>=2)的树,其n-1层符合满二叉树,第n层结点必须满足从左向右都连续。
比如:
1.若设二叉树的深度为h,除第 h 层外,其它各层 (1~h-1) 的结点数都达到最大个数,第 h 层所有的结点都连续集中在最左边,这就是完全二叉树。
2.如果有度为 1 的结点,那只可能有一个,且该节点只有左孩子,而无右孩子
二叉树的性质及其推导:
性质1:二叉树第i层上的结点数目最多为 2^{i-1} (i≥1)
证明:下面用"数学归纳法"进行证明。
(01) 当i=1时,第i层的节点数目为2{i-1}=2{0}=1。因为第1层上只有一个根结点,所以命题成立。
(02) 假设当i>1,第i层的节点数目为2^{i-1}。这个是根据(01)推断出来的!
下面根据这个假设,推断出"第(i+1)层的节点数目为2{i}“即可。
由于二叉树的每个结点至多有两个孩子,故"第(i+1)层上的结点数目” 最多是 “第i层的结点数目的2倍”。 即,第(i+1)层上的结点数目最大值=2×2^{i-1}=2{i}。
故假设成立,原命题得证!
性质2:深度为k的二叉树至多有2^{k}-1个结点(k≥1)
证明:在具有相同深度的二叉树中,当每一层都含有最大结点数时,其树中结点数最多。利用"性质1"可知, 深度为k的二叉树的结点数至多为:
20+21+…+2k-1=2k-1
故原命题得证!
性质3:包含n个结点的二叉树的高度至少为log2 (n+1)
证明:根据"性质2"可知,高度为h的二叉树最多有2^h–1个结点。反之,对于包含n个节点的二叉树的高度至少为log2(n+1)。
性质4:在任意一棵二叉树中,若终端结点的个数为n0,度为2的结点数为n2,则n0=n2+1
证明:因为二叉树中所有结点的度数均不大于2,所以结点总数(记为n)=“0度结点数(n0)” + “1度结点数(n1)” + “2度结点数(n2)”。由此,得到等式一。
(等式一) n=n0+n1+n2
另一方面,0度结点没有孩子,1度结点有一个孩子,2度结点有两个孩子,故二叉树中孩子结点总数是:n1+2n2。此外,只有根不是任何结点的孩子。故二叉树中的结点总数又可表示为等式二。
(等式二) n=n1+2n2+1
由(等式一)和(等式二)计算得到:n0=n2+1。原命题得证!
性质5:
树的边的个数比节点数少一个,节点个数于节点边的关系: N个节点的树有N-1个边.
边与度的关系:N - 1 = 0N0+1N1 + 2 * N2+3N3+……+KNK
练习题:
习题1:
习题2:
习题3:
数据结构的树与二叉树基本概念、结构特点及性质的内容到此介绍结束了,下一章将会通过代码实现堆,并介绍TopK问题,敬请期待吧!感谢您的阅读!!!如果内容对你有帮助的话,记得给我点个赞——做个手有余香的人。
【数据结构】 树与二叉树的基本概念、结构特点及性质相关推荐
- 数据结构——树和二叉树章节思维导图
数据结构--树和二叉树章节思维导图
- 数据结构-树与二叉树-思维导图+小结
数据结构-树与二叉树-思维导图 1 数据结构-第五章-树与二叉树-思维导图 2 思维导图-补充 3 小结 3.1 知识点小结 3.2 习题小结 1 数据结构-第五章-树与二叉树-思维导图 数据结构 ...
- 王道——数据结构——树与二叉树(3)
系列文章目录 其他章节相关文章 王道--数据结构--栈和队列(1) 本章节其他相关文章 王道--数据结构--树与二叉树(1) 王道--数据结构--树与二叉树(2) 王道--数据结构--树与二叉树(4) ...
- 数据结构——树及二叉树的概念及结构的了解
文章目录 一.树概念及结构? 1.树的概念 2.树的相关概念 3.树的表示 4. 树在实际中的运用 二.叉树的概念及结构 1.概念 2.现实中的二叉树 3.特殊的二叉树 4.二叉树的性质 5.二叉树的 ...
- 树和二叉树的基本概念(二级)
我们来看数据结构的另外一块内容,树和二叉树,这是我们数据结构的一个重点,尤其是二叉树来说,树是一个重点,我们主要是研究二叉树,先看一下树的基本概念,然后我们再看一下二叉树的基本知识,这两部分讲完之后呢 ...
- 数据结构—树与二叉树
总第119篇 前言 之前谈到的线性表.栈和队列都是一对一的数据结构,但是现实中也存在很多一对多的数据结构,这篇要写的就是一种一对多的数据结构---树.全文分为如下几部分: 树的一些基本概念 树的存储结 ...
- 数据结构——树和二叉树
目录 1.树.森林 1.1定义和基本术语 1.1.1结点.树的关系和属性 1.1.2基本概念 1.2树的性质 1.3树的存储结构 1.3.1双亲表示法(顺序存储) 1.3.2孩子表示法(顺序+链式存储 ...
- mysql 遍历二叉树_数据结构——树与二叉树的遍历
目录 树 二叉树 二叉树的遍历 总结 参考资料 序 树是学习数据结构的时候非常重要的一个数据结构,尤其是二叉树更为重要.像Java的HashMap 就使用了红黑树,而Mysql的索引就使用到了B+树. ...
- 数据结构-树,二叉树,森林
树,二叉树,森林 王卓老师的数据结构课程笔记 树和二叉树 定义 结点之间有分支,具有层次关系 是n个结点的有限集. 若n = 0,称为空树: 若n > 0,则它满足如下两个条件: 有且仅有一个特 ...
最新文章
- 云原生时代消息中间件的演进路线
- swift_039(Swift中的KVC的使用方法)
- indexedDB数据库的使用
- Python编程的若干个经典小技巧
- 成功解决eric6-EditorConfig Properties The EditorConfig properties for file h5py\numpy.pxd could not be l
- C#模板编程(1):有了泛型,为什么还需要模板?
- socket通信之最简单的socket通信
- 理解 OpenStack 高可用(HA) (6): MySQL HA
- postman发送HTTP请求自动生成MD5签名
- 【OpenStack】【Keystone】安装与配置详解
- linux中的进程、环境变量和虚拟地址
- mysql sqlsugar_【开源框架】SqlSugarRepository 全库ORM 正式发布
- python3对接聊天机器人API
- typedef用法小结(转载)
- 新版UI千月影视盒子双端源码
- 多渠道打包之动态修改App名称,图标,applicationId,版本号,添加资源
- mysql 5.6 cmake 参数_编译cmake MySQL 5.6.10报错
- 各抢票软件的优势,抢火车票成功率高的APP
- 【SonarQube】安装、配置与使用 01
- Apache-Ant下载以及安装步骤
热门文章
- 四川理工计算机专业好不好,急!!!!四川理工 、 宜宾学院 、 内江师范学院 哪个学校计算机专业好点?...
- 中国氯化聚氯乙烯市场调研及投资策略分析报告2022-2028年
- 验证码(CAPTCHA)
- python比对excel表数据中的差异_Excel表格中数据比对和查找的几种技巧
- One Billion Customers
- php如何看出是什么框架,拿到一个php源码怎么分析它用的是什么框架?
- hdwiki v5.1存在SQL注入导致可下载任意文件
- 贴片电阻有哪几类封装尺寸?
- java 获取集合对象中某个属性不为空的数据集合 lambda获取【拉姆达表达式 】
- Conda 镜像站配置