| |
|
开发:
C++知识库
Java知识库
JavaScript
Python
PHP知识库
人工智能
区块链
大数据
移动开发
嵌入式
开发工具
数据结构与算法
开发测试
游戏开发
网络协议
系统运维
教程: HTML教程 CSS教程 JavaScript教程 Go语言教程 JQuery教程 VUE教程 VUE3教程 Bootstrap教程 SQL数据库教程 C语言教程 C++教程 Java教程 Python教程 Python3教程 C#教程 数码: 电脑 笔记本 显卡 显示器 固态硬盘 硬盘 耳机 手机 iphone vivo oppo 小米 华为 单反 装机 图拉丁 |
-> 数据结构与算法 -> 数据结构——树的相关操作 -> 正文阅读 |
|
[数据结构与算法]数据结构——树的相关操作 |
1.树的存储结构(1)双亲表示法? ?一组连续空间存储树的结点,同时在每个结点中,附设一个指示器指示其双亲结点在数组中的位置。 结点结构:
? 双亲表示法是使用数组来表示的。 树结构:
由于根结点是没有双亲的,所以我们约定根结点的位置域设置为-1。结点自己的位置用下标表示。 (2)孩子表示法? ? ? ?把每个结点的孩子排列起来,以单链表作存储结构,则n个结点有n个孩子链表。如果是叶子结点则此单链表为空。然后n个头指针又组成了一个线性表,采取顺序存储结构,存放进一个一维数组中。 孩子链表的孩子结点:
?表头数组的表头结点:
树结构:
?(3)孩子兄弟表示法? 任意一棵树,它的结点的第一个孩子如果存在就是唯一的,它的右兄弟如果存在也是唯一的。因此,我们设置两个指针,分别指向该结点的第一个孩子和此孩子的右兄弟。
? data是数据域,firstchild为指针域,存储该结点的第一个孩子结点的存储地址,rightsib是指针域,存储该结点的右兄弟结点的存储地址。(类似二叉链表) ?2.二叉树(1)二叉树的链式存储结构? ?二叉树每个结点最多有两个孩子,所以为它设计一个数据域和两个指针域。我们称这样的链表为二叉链表。
?二叉树的顺序存储结构就是声明一个数组,然后把二叉树按照层次遍历的顺序(从上到下,从左到)标上序号,按照序号存储到数组中即可。 ?(2)遍历二叉树? ? 1.前序遍历
? 规则是若二叉树为空,则空操作返回,否则先访问根结点,然后前序遍历左子树,再前序遍历右子树。 ? ? 2.中序遍历
? 规则是若树为空,则空操作返回,否则从根结点开始(注意并不是先访问根结点),中序遍历根结点的左子树,然后是访问根结点,最后中序遍历右子树。、 ? ? 3.后序遍历
?规则是若树为空,则空操作返回,否则先后序遍历左子树,再后序遍历右子树,最后访问根结点。 ? ?4.层序遍历
? ?规则是若树为空,则空操作返回。否则从树的第一层,也就是根结点开始访问,从上而下逐层遍历,在同一层中,按从左到右的顺序对结点逐个访问。 (3)建立二叉树?这里选择先序序列(前序序列)来建立二叉树
? 按照先序遍历的顺序输入各个结点的内容。这里值得注意的地方——要把空结点也输入进去,用'#'符号代表空结点。否则二叉树的建立将永远持续下去。举例:下图对应的输入操作应该是? A B D # # E # # C F # # # 示例:
(4)计算二叉树深度
?若是空树,深度为0。否则递归计算左子树的深度为m,递归计算右子树的深度为n,二叉树的深度则为m与n的较大者+1。 (5)计算二叉树结点总数
?若是空树,则结点为0(并且递归到空结点的时候也不能算作结点)。如果不是空树,则结点个数为左子树的结点+右子树的结点+1(根)。 (6)计算二叉树叶子结点总数
? 如果树为空则为0。如果是叶子结点返回1。二叉树叶子结点总数为根的左子树叶子结点个数+右子树叶子结点个数。 示例: ?7 1 10 9 # # 6 # # 5 # # 3 2 # # 8 # #? ?注意这里的10,由于输入的相当于字符型,所以会被拆成1和0分别输入进去,因此要换一种表示方法——输入整形,用-1表示空结点。 ?7 1 10 9 -1 -1 6 -1 -1 6 -1 -1 3 2 -1 -1 8 -1 -1
? |
|
|
上一篇文章 下一篇文章 查看所有文章 |
|
开发:
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/25 20:22:16- |
|
网站联系: qq:121756557 email:121756557@qq.com IT数码 |