| |
|
开发:
C++知识库
Java知识库
JavaScript
Python
PHP知识库
人工智能
区块链
大数据
移动开发
嵌入式
开发工具
数据结构与算法
开发测试
游戏开发
网络协议
系统运维
教程: HTML教程 CSS教程 JavaScript教程 Go语言教程 JQuery教程 VUE教程 VUE3教程 Bootstrap教程 SQL数据库教程 C语言教程 C++教程 Java教程 Python教程 Python3教程 C#教程 数码: 电脑 笔记本 显卡 显示器 固态硬盘 硬盘 耳机 手机 iphone vivo oppo 小米 华为 单反 装机 图拉丁 |
-> 数据结构与算法 -> 数据结构7--树1 -> 正文阅读 |
|
[数据结构与算法]数据结构7--树1 |
数据结构--树笔记来源: 懒猫老师. 树的逻辑结构树的定义:
树的定义采用递归方法
树的基本术语:
树结构和线性结构的比较 树的抽象数据类型定义:
前序遍历:(根结点最先被访问) 树的前序遍历操作定义为:
否则:
遍历根结点的每一棵子树.
后序遍历:(根结点最后被访问)
否则:
层序遍历:
树的存储结构双亲表示法基本思想:用一维数组来存储树的各个结点(一般按层序存储) ,数组中的一个元素对应树中的一个结点,包括结点的数据信息以及该结点的双亲在数组中的下标。
如何查找双亲结点?时间性能? 例如要查找 G ,它的双亲结点是 2 , 2 下标对应的是 C 结点,则可以查到 G 的双亲是 C。时间复杂度为 O(1)。 如何查找孩子结点?时间性能? 例如查找结点 C 的孩子结点,C 对应的下标是 2,则需要使用循环,遍历整个数组才行,将序号为 2 的结点找到,复杂度为 O(n)。 改进查找孩子结点 在结构体中增加字段 firstChild,用来记录结点的第一个孩子,
对于结点 B ,它第一个孩子为 D,D 所对应的下标为 3,则 B 的 firstChild 处为 1。 但是此时只是记录了一个孩子,如何将所有的孩子全部记录? 如何查找兄弟结点?时间性能?
孩子表示法如何表示孩子? 链表中的每个结点包括一个数据域和多个指针域,每个指针域指向该结点的一个孩子结点。 方案 1:指针域的个数等于树的度
方案 2:指针域的个数等于该结点的度 其中:
缺点:结点结构不一致 方法改进:
双亲孩子表示法孩子兄弟表示法
二叉树的逻辑结构二叉树的逻辑结构二叉树的定义: 二叉树的特点:
二叉树的基本形态: 具有三个结点的树和具有三个结点的二叉树的形态: 特殊的二叉树:
斜树的特点:
2. 满二叉树
满二叉树在同样深度的二叉树中结点个数最多,满二叉树在同样深度的二叉树中叶子结点个数最多。 3. 完全二叉树
特点:
二叉树的性质
二叉树的存储结构及其实现二叉树的存储结构顺序存储结构
如何利用数组下标来反映结点之间的逻辑关系?
完全二叉树可以使用顺序存储的方法。
一棵斜树的顺序存储会怎样呢? 二叉链表 基本思想:
结点结构:
在二叉链表中 如何求某结点的双亲? 因为结点的指针域都指向孩子结点,无法通过孩子结点找到双亲结点。故需要采用三叉链表 三叉链表
二叉树的遍历
次序: 前序遍历,中序遍历,后序遍历,层序遍历 前序(根)遍历
例如: 前序遍历------递归算法: 中序遍历
中序遍历------递归算法: 后序遍历
后序遍历------递归算法: 层序遍历
层序遍历编程思路
伪代码: 前序遍历详解: 链接: 前序遍历. 二叉树的创建链接: 二叉树的创建详解. 构造函数—建立二叉树 遍历是二叉树各种操作的基础,可以在遍历的过程中进行各种操作,例如建立一棵二叉树。 如何用一种遍历序列生成二叉树?
链接: 二叉树的创建(方法二). 根据二叉树的遍历结果确定二叉树二叉树的遍历操作
构造过程如下:
线索二叉树线索二叉树也称为线索链表 如何保存二叉树的某种遍历序列?
线索:将二叉链表中的空指针域指向前驱结点和后继结点的指针被称为线索 线索化:使二叉链表中结点的空链域存放其前驱或后继信息的过程称为线索化 线索链表:加上线索的二叉链表称为线索链表(或线索二叉树)
中序线索链表的建立一构造函数 分析:建立线索链表,实质上就是将二叉链表中的空指针改为指向前驱或后继的线索,而前驱或后继的信息只有在遍历该二叉树时才能得到。 建立一个二叉链表是在遍历二叉树的时候,将空指针改为线索 p 是正在访问的结点 p 是 pre 的后继,pre 是 p 的前驱
|
|
|
上一篇文章 下一篇文章 查看所有文章 |
|
开发:
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 18:17:15- |
|
网站联系: qq:121756557 email:121756557@qq.com IT数码 |