线索二叉树 基本概念: n个结点的二叉链表中共有2n个链域,但只有n-1个有用的非空链域,其余n+1个是空的,利用这n+1个空链域来存放遍历过程中结点的前驱和后继;规定:若结点有左子树,则其LChild指向左孩子,否则LCHild指向前驱;若结点有右子树,则其RChild域指向右孩子,否则指向后继。 ...
分类:
其他好文 时间:
2018-09-21 23:17:56
阅读次数:
391
二叉树是最常用的数据结构之一,笔者过去一直将关注点放在复杂的树结构(例如红黑树,自平衡树),认为那些才是树的重要应用,但当重新由基本看起,才发现树的基本定中就隐藏着树这一结构的精髓。尽管是些浅薄蠢笨的理解和推演,但笔者还是满怀兴奋的想要将它记录下来。 一、二叉树的定义 二叉树的定义不用多说,很多书本 ...
分类:
其他好文 时间:
2018-09-09 00:44:55
阅读次数:
216
文字描述 由上篇关于树和二叉树的存储结构知,树和二叉树都可以采用二叉链表作为存储结构。也就是说,给定一颗树,可以找到惟一的一颗二叉树与之对应,从物理结构来看,它们的二叉链表是相同的,只是解释不同而已。 1 森林转换成二叉树 如果F = {T1, T2, …, Tm}是森林,需转换成一棵二叉树B={r ...
分类:
其他好文 时间:
2018-08-07 20:52:45
阅读次数:
156
文字描述 1 二叉树的顺序存储 用一组地址连续的存储单元自上而下,自左至右存储完全二叉树上的结点元素。 这种顺序存储只适用于完全二叉树。因为,在最坏情况下,一个深度为k且只有k个结点的单支树却需要长度为2k-1的一维数组。 2 二叉树的链式存储(二叉链表): 链表中的结点至少包含3个域:数据域,左指 ...
分类:
其他好文 时间:
2018-08-07 20:28:39
阅读次数:
181
二叉树的补充: 线索二叉树: 1.引入线索二叉树 二叉树的遍历实质上是对一个非线性结构实现线性化的过程,使每一个节点(除第一个和最后一个外)在这些线性序列中有且仅有一个直接前驱和直接后继。但在二叉链表存储结构中,只能找到一个节点的左、右孩子信息,而不能直接得到节点在任一遍历序列中的前驱和后继信息。这 ...
分类:
编程语言 时间:
2018-07-27 21:11:08
阅读次数:
160
1.设计一个高效的算法,从顺序表L中删除所有值为x的元素,要求时间复杂度为O(n),空间复杂度为O(1). 2.算法实现带头节点单链表的就地址逆置问题。 3.已知一个带头结点的单链表L,其结点的元素值以非递减顺序排列,设计算法删除该单链表中元素值重复的结点。 4.以二叉链表做存储结构,编写算法输出二 ...
分类:
编程语言 时间:
2018-06-30 20:21:45
阅读次数:
263
本篇博文是博主在学习C语言算法与数据结构的一些应用代码实例,给出了以二叉链表的形式实现二叉树的相关操作。如创建,遍历(先序,中序后序遍历),求树的深度,树的叶子节点数,左右兄弟,父节点。 代码清单如下: ...
分类:
编程语言 时间:
2018-06-15 13:15:38
阅读次数:
204
1.树的度 结点拥有的子树数称为结点的度。度为0的结点称为叶结点(leaf)或终端结点;度不为0的结点称为非终端结点或分支结点。2.分支结点 分支结点也称为内部结点。3.树的层次 结点的层次从根开始定义起,根为第一层,根的孩子为第二层。4.树的存储结构 利用顺序存储和链式存储的特点,完全可以实现对数 ...
分类:
其他好文 时间:
2018-05-31 11:28:33
阅读次数:
196
以二叉链表来作为储存结构的时候,只能找到左右孩子的信息,不能直接得到结点的前驱和后继信息,这种信息只有在遍历的过程中才能实现。在n个结点的二叉链表中必定存在n+1个空链域。可以用这些空链域来保存这些信息;做以下规定:若结点有左子树,则lchild指向其左孩子,若没有左孩子则指向其前驱;若结点有右子树 ...
分类:
编程语言 时间:
2018-05-18 22:15:48
阅读次数:
270
一、二叉树的遍历: 1、前序遍历:根左右 2、中序遍历:左根右 3、后序遍历:左右根 4、层次遍历:一层一层的遍历,类似广度优先 二、二叉树的存储结构 二叉树以二叉链表结构存储,也就是1个数据域,两个指针域(分别指向左右孩子) //二叉树的二叉链表结构定义 typedef char ElemType ...
分类:
其他好文 时间:
2018-02-06 20:11:56
阅读次数:
163