IT数码 购物 网址 头条 软件 日历 阅读 图书馆
TxT小说阅读器
↓语音阅读,小说下载,古典文学↓
图片批量下载器
↓批量下载图片,美女图库↓
图片自动播放器
↓图片自动播放器↓
一键清除垃圾
↓轻轻一点,清除系统垃圾↓
开发: C++知识库 Java知识库 JavaScript Python PHP知识库 人工智能 区块链 大数据 移动开发 嵌入式 开发工具 数据结构与算法 开发测试 游戏开发 网络协议 系统运维
教程: HTML教程 CSS教程 JavaScript教程 Go语言教程 JQuery教程 VUE教程 VUE3教程 Bootstrap教程 SQL数据库教程 C语言教程 C++教程 Java教程 Python教程 Python3教程 C#教程
数码: 电脑 笔记本 显卡 显示器 固态硬盘 硬盘 耳机 手机 iphone vivo oppo 小米 华为 单反 装机 图拉丁
 
   -> 数据结构与算法 -> 数据结构与算法---树 -> 正文阅读

[数据结构与算法]数据结构与算法---树

树的定义

1.当结点为0,树为空树。 2.非空的条件:只有一个根结点,左子树和右子树不能相交。

树的结构

请添加图片描述
1.树的结点:A,B,C就是这些就是结点。
2.结点的度:某个结点所拥有的子树就是他的度,B的度就是1,A是3。
3.树的度:结点度最大的,就是树的度
4.叶子:度为0的结点就是叶子或者终端结点,例如K,L结点。
5.非终端结点:度不为0的结点,也可以称为内部结点。
6.双亲:就是父结点,B的双亲就是A
7.孩子:子结点,B的孩子就是E,F
8.兄弟:同一个双亲的孩子。
9.祖先:一个结点所从自身向上经过的结点都是祖先,E的祖先就是A,B。
10.子孙:以某个结点为根的子树下的所有结点都是子孙,例如:E,F,K,L都是B的子孙。
11.层次:就是树有多少层,上图有4个层次。
12.堂兄弟:双亲在同一层的结点,E,F,G,H,I,J都是堂兄弟。
13.树的深度:树最大的层数
14.有序树和无序树:按照从左到右的次序(不能更换次序),称为有序树,否则就是无序树。
15.森林:子树的集合就是树

二叉树的定义

1.没有结点就是空树。
2.非空的条件:只有一个根节点的,拥有左子树和右子树,其子树也是二叉树。

二叉树的分类

请添加图片描述

1.满二叉树:

深度为k二叉树的结点一共有**(2^k)-1个结点,深度3,结点一共有:7.**
每一层的节点数都具有2^i-1,第三层,结点最多有4个。
每个结点不存在度为1。

2.完全二叉树:

1.和二叉树有一样的次序。
2.只有最后两层的结点的度可以小于2.
3.右分支下的层数最大为L,左分支下的子孙一定为L或L+1

二叉树的性质

第i层上,最多右2^i-1个结点,第2层,最多2个结点。
深度为k的二叉树最多右(2^k)-1个结点,深度3,最多7个结点。
叶子结点数为n0,度为2的结点数为2,n0 = n2-1,叶子结点的总和 = 度为2的结点+1

二叉树的存储结构

顺序存储

从左到右编号
一般二叉树的顺序结构,对于缺少的数据,可以用?来替代

链式存储

链表中有数据域和左右指针域 --二叉链表。
链表中除了上述所说的3个指针,还可以添加指向双亲的指针–三叉链表。

树的表示方法

双亲表示法

请添加图片描述
a没有双亲,所有parent-1,parent除了最大的根节点,其他孩子都是根据自己的双亲编号填入的,比如B所在的双亲编号是0,那parent就填0

孩子表示法

请添加图片描述

孩子表示法:首先找出子树下有孩子的根结点,然后指针就指向对应的孩子的编号。

孩子兄弟表示

请添加图片描述
通过孩子结点和兄弟结点来表示
例如:A下面B长子,B有堂兄弟C,然后B下面有孩子D。

遍历二叉树

先序遍历

从根结点开始,然后先去左子树,最后右子树。

中序遍历

从左子树的底开始(从左到右),然后到根结点,然后再从右子树的底向上遍历(从左到右)(不经过根节点)

后序遍历

先从左到右遍历左子树(不去根节点),然后去右子树(从左到右遍历),最后到根结点。

线索二叉树

这种结构构成的二叉链表作为二叉树的存储结构,叫做线索链表。
前驱和后继指针叫做线索。
加上线索的二叉树叫做线索二叉树。
对二叉树以某种次序遍历使其变为线索二叉树的过程叫做线索化。

树和森林,二叉树转化

请添加图片描述
树转化为二叉树:就是将除了长子之外的兄弟结点都砍掉,放到长子下面。
森林转化为二叉树:就是将根节点连起来。
二叉树转化为森林:把兄弟结点连回来,将根节点A下面的线拉直,A和E和G,都是森林的根节点。

树的遍历和森林的遍历

树的遍历

请添加图片描述

先跟遍历,从根节点开始,从左子树-右子树的遍历
从左子树左边开始遍历,一个一个的遍历,最后再到根节点R。

森林的遍历

请添加图片描述
先序遍历:一颗树一颗树的从上往下遍历(A,B,C,D,E,F,G)
后序遍历,一颗一颗树的从后往上遍历(B,C,D,A,F,E,G)

哈夫曼树

哈夫曼树是最优二叉树,路径最短的二叉树。
路径:一个结点到根节点的分支叫路径
路径长度,经过几个分支,就是多少长度。
权:就是给结点的量
结点带权路径的长度:权*路径
树的带权路径长度:所有叶子结点带权路径的长度总和。

哈夫曼树的构造

请添加图片描述
权小的放在左边,权大的放在右边 (c在左,d在右),然后c和d形成一棵树
然后把b放在左边,形成一棵树
最后还有一个a,放在左边,形成一棵树

二叉排序树

左不空,左比根结点的值小,右比根节点大(插入的时候也是这样判断的)

平衡二叉树

左子树和右子树的深度只差绝对值不超过1

  数据结构与算法 最新文章
【力扣106】 从中序与后续遍历序列构造二叉
leetcode 322 零钱兑换
哈希的应用:海量数据处理
动态规划|最短Hamilton路径
华为机试_HJ41 称砝码【中等】【menset】【
【C与数据结构】——寒假提高每日练习Day1
基础算法——堆排序
2023王道数据结构线性表--单链表课后习题部
LeetCode 之 反转链表的一部分
【题解】lintcode必刷50题<有效的括号序列
上一篇文章      下一篇文章      查看所有文章
加:2022-10-08 21:07:03  更:2022-10-08 21:08:38 
 
开发: C++知识库 Java知识库 JavaScript Python PHP知识库 人工智能 区块链 大数据 移动开发 嵌入式 开发工具 数据结构与算法 开发测试 游戏开发 网络协议 系统运维
教程: HTML教程 CSS教程 JavaScript教程 Go语言教程 JQuery教程 VUE教程 VUE3教程 Bootstrap教程 SQL数据库教程 C语言教程 C++教程 Java教程 Python教程 Python3教程 C#教程
数码: 电脑 笔记本 显卡 显示器 固态硬盘 硬盘 耳机 手机 iphone vivo oppo 小米 华为 单反 装机 图拉丁

360图书馆 购物 三丰科技 阅读网 日历 万年历 2024年11日历 -2024/11/29 11:07:18-

图片自动播放器
↓图片自动播放器↓
TxT小说阅读器
↓语音阅读,小说下载,古典文学↓
一键清除垃圾
↓轻轻一点,清除系统垃圾↓
图片批量下载器
↓批量下载图片,美女图库↓
  网站联系: qq:121756557 email:121756557@qq.com  IT数码