所谓遍历(Traversal)是指沿着某条搜索路线,依次对树中每个结点均做一次且仅做一次访问。 访问结点所做的操作依赖于具体的应用问 题。 遍历是二叉树上最重要的运算之一,是二叉树上进行其它运算之基础。 一、遍历二叉树 二叉树是由三个基本单元组成的:根(D)、左子树(L)、右子树(R); 若能依次遍 ...
分类:
其他好文 时间:
2019-04-27 19:36:15
阅读次数:
187
遍历二叉树 traversing binary tree 线索二叉树 threaded binary tree 线索链表 线索化 二叉树3个基本单元组成:根节点、左子树、右子树 以L、D、R分别表示遍历左子树、访问根节点、遍历右子树 可能的情况6种 排列A3 2 LDR LRD DLR DRL RL ...
分类:
其他好文 时间:
2019-04-26 13:11:05
阅读次数:
136
对于二叉树的遍历通常习惯采用递归的方法,当树的规模很大的时候,递归的深度就会很深,这就导致了对空间的浪费。在此,我们先不讨论二叉树遍历的本质,以及递归的详细过程。我先先来研究一下,二叉树本身: 图1 二叉树 图1所示为一个二叉树的结构,我们注意结点的特征。结点包含了三个数据:存储值,指向左子节点的左 ...
分类:
其他好文 时间:
2019-03-02 12:28:49
阅读次数:
186
1、线索二叉树的原理: 为什么会有线索二叉树呢?我们观察一个普通的二叉树: 这正是我们平常见到的二叉树,可以发现A,B,C,D这四个节点它们的左孩子和有孩子都有节点,而E,F,G,H,I,J它们都有空闲的指针,这些空闲的指针不存储任何事物 白白浪费了内存的资源。 当我们中序遍历二叉树:HDIBJEA ...
分类:
编程语言 时间:
2019-02-26 01:05:38
阅读次数:
173
线索二叉树,或者说,对二叉树线索化,实质上就是遍历一棵二叉树,在遍历的过程中,检查当前结点的左、右指针域是否为空。如果为空,将它们改为指向前驱结点或后继结点的线索。
分类:
其他好文 时间:
2019-02-21 09:49:38
阅读次数:
161
二叉树是一种树形结构,它的特点是每个每个结点至多有两棵子树,二叉树有左、右子树之分,且左、右子树不能颠倒。二叉树及其变体树形结构在实际编程中使用的非常多,如:哈弗曼树,线索二叉树,红黑树等。
分类:
其他好文 时间:
2019-02-21 09:19:13
阅读次数:
177
用的自己借助sublime TEXT搭建的C++环境,教程在前面有,这里插个链接。 ...
分类:
其他好文 时间:
2019-02-16 00:02:47
阅读次数:
245
线索二叉树 二叉树的基本定义结构我们都很熟悉,节点数据加上孩纸指针,左孩子指娘家,右孩子指婆家,我们来看这个例子: 我们会发现,有些孩子并没有地方可以去,例子中的树一共十个结点,十一个空闲指针,由此引出我们对于空闲指针的计算公式:一个有 n 个结点的二叉树有 2n 个指针域,而 n 个结点会产生 n ...
分类:
其他好文 时间:
2019-02-04 22:07:00
阅读次数:
266
将二叉树线索化,实际上就是将其变为一个循环链表,下面的代码是采用中序的线索化,遍历也是中序遍历,都是基于中序的。在中序遍历序列中求某一结点的前驱和后继的方法:(1)求某一结点的后继:如果所考虑的结点有右孩子,那么就要从该右孩子开始,顺着右孩子的左孩子域找下去,一直到左孩子域为空为止,最后这个结点就是 ...
分类:
其他好文 时间:
2018-12-01 11:01:43
阅读次数:
152
线索化二叉树时,一个节点的前一个节点,叫前驱节点 线索化二叉树时,一个节点的后一个节点,叫后继节点 ...
分类:
其他好文 时间:
2018-11-20 15:18:32
阅读次数:
143