| |
|
开发:
C++知识库
Java知识库
JavaScript
Python
PHP知识库
人工智能
区块链
大数据
移动开发
嵌入式
开发工具
数据结构与算法
开发测试
游戏开发
网络协议
系统运维
教程: HTML教程 CSS教程 JavaScript教程 Go语言教程 JQuery教程 VUE教程 VUE3教程 Bootstrap教程 SQL数据库教程 C语言教程 C++教程 Java教程 Python教程 Python3教程 C#教程 数码: 电脑 笔记本 显卡 显示器 固态硬盘 硬盘 耳机 手机 iphone vivo oppo 小米 华为 单反 装机 图拉丁 |
-> 数据结构与算法 -> 数据结构(王卓) -> 正文阅读 |
|
[数据结构与算法]数据结构(王卓) |
目录 5.5.1遍历二叉树一.遍历1.定义顺着某一条搜索路径寻访二叉树中的结点,使得每个结点均被访问一次,而且仅被访问一次(又称周游) 2.目的得到树中所有的一个线性排列 3.用途它是树结构插入、删除、修改、查找和排序运算的前提,是二叉树一切运算的基础和核心 二.遍历二叉树算法描述1.遍历方法? 2.先序二叉树的操作定义(根左右)?3.中序遍历二叉树的操作定义(左根右)?4.后序遍历二叉树的操作定义(左右根)?三.根据遍历序列确定二叉树1.根据遍历序列确定二叉树
2.由先和中序推二叉树?3.由中和后序推二叉树四.遍历的算法实现--先序遍历?1.先序序列的递归算法?2.中序遍历的算法实现3.后序遍历的算法实现五.中序遍历非递归算法1.二叉树中序遍历的非递归算法的关键在中序遍历过某结点的整个左子树后,如何找到该结点的根以及右子树 2.建立思想
3.算法实现?六.二叉树的层次遍历1.定义对于一颗二叉树,从根结点开始,按从上到下,从左到右的顺序访问每一个结点,每一个结点仅仅访问一次 2.算法设计思路:使用一个队列(1)将根结点进队 (2)队不空时循环:从队列中出列一个结点*p,访问它;
3.算法实现? ?七.二叉树的建立1.按先序遍历序列建立二叉树的二叉表(1)例:已知先序序列为:ABCDEGF
2.唯一确定二叉树?八.复制二叉树1.算法思路(1)如果是空树,递归结束; (2)否则,申请新结点空间,复制根结点
?九.计算二叉树深度1.算法思路(1)如果是空树,则深度为0 (2)否则,递归计算左子树的深度记为m,递归计算右子树的深度记为n,二叉树的深度则为m与n的较大者加1 2.算法实现?十.计算二叉树结点总数1.算法思路(1)如果是空树,则结点个数为0 (2)否则,结点个数为左子树的结点个数+右子树的结点个数再+1 ?2.计算二叉树叶子结点数(1)如果是空树,则叶子结点个数为0 (2)否则,为左子树的叶子结点个数+右子树的叶子结点个数 ?十一.线索二叉树1.利用二叉链表中的空指针域如果某个结点的左孩子为空,则将空的左孩子指针域改为指向其前驱;如果某结点的右孩子为空,则将空的右孩子指针域改为指向其后继——这种改变指向的指针称为“线索” 加上线索的二叉树称为线索二叉树,对二叉树按某种遍历次序使其变为线索二叉树的过程叫线索化 2.表示区分为区分Irchid和rchild指针到底是指向孩子的指针,还是指向前驱或者后继的指针,对二叉链表中每个结点增设两个标志域Itag和rtag,并约定: Itag=0 Ichild指向该结点的左孩子 Irag=1 Ichild指向该结点的前驱 rtag=0 rchild指向该结点的右孩子 rtag=1 rchild指向该结点的后继 ? ? ?5.6树和森林一.树和森林1.相关定义(1)森林:是m(m》0)棵互不相交的树的集合 (2)树:是n(n》0)个结点的有限集。若n=0,称为空树 若n>0
二.树的存储结构1.双亲表示法?(1)c语言的类型描述 ?2.孩子链表(1)定义:把每个结点的孩子结点排列起来,看成是一个线性表,用单链表存储,则n个结点有n个孩子链表(叶子的孩子链表为空表)。而n个头指针又组成一个线性表,用顺序表(含n个元素的结构数组)存储。 ?(2)c语言的类型描述 3.孩子兄弟表示法(二叉树表示法)(1)实现:用二叉链表作树的存储结构,链表中每个结点的两个指针域分别指向其第一个孩子结点和下一个兄弟结点 ? ?三.树与二叉树的转换四.树与森林的遍历1.树的遍历(1)先根(次序)遍历 若树不空,则先访问根结点,然后依次先根遍历各棵子树 (2)后根(次序)遍历 若树不空,则先依次后根遍历各棵子树,然后访问根结点 (3)按层次遍历 若树不空,则自上而下自左而右访问树中每个结点 ?2.森林的遍历? ? ? ? ? |
|
|
上一篇文章 下一篇文章 查看所有文章 |
|
开发:
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/26 1:39:08- |
|
网站联系: qq:121756557 email:121756557@qq.com IT数码 |