理论教育 2019版数据结构高分笔记:二叉树存储结构

2019版数据结构高分笔记:二叉树存储结构

时间:2023-11-03 理论教育 版权反馈
【摘要】:将完全二叉树中的结点值按编号依次存入一个一维数组中,即完成了一棵二叉树的顺序存储。表6-1 数组BTree[]2.链式存储结构顺序存储结构显然有很大的局限性,不便于存储任意形态的二叉树。这种存储结构又称为二叉链表存储结构,如图6-6所示。图6-6 二叉树以链式存储结构存储

2019版数据结构高分笔记:二叉树存储结构

1.顺序存储结构

顺序存储结构即用一个数组来存储一棵二叉树,这种存储方式最适合于完全二叉树,用于存储一般二叉树会浪费大量的存储空间。将完全二叉树中的结点值按编号依次存入一个一维数组中,即完成了一棵二叉树的顺序存储。例如,将图6-5中所示的完全二叉树存入数组BTree[]中,见表6-1。

例如,知道了顶点A的下标为1,要得到A的左孩子结点只需访问BTree[1*2]即可。类似地,如果知道了一个结点i,如果2i不大于n,则i的左孩子结点就存在于BTree[2*i]内。

6-1 数组BTree[]

978-7-111-58746-0-Chapter06-10.jpg

2.链式存储结构

顺序存储结构显然有很大的局限性,不便于存储任意形态的二叉树。观察二叉树的形态可以发现是一个根结点与两棵子树之间的关系,因此设计出了含有一个数据域和两个指针域的链式结点结构,具体如下:(www.daowen.com)

978-7-111-58746-0-Chapter06-11.jpg

其中,data表示数据域,用于存储对应的数据元素;lchild和rchild分别表示左指针域和右指针域,分别用于存储左孩子结点和右孩子结点的位置。这种存储结构又称为二叉链表存储结构,如图6-6所示。对应的结点类型的定义如下:

978-7-111-58746-0-Chapter06-12.jpg

说明:考试中如果让写出结点定义,以上就是适用范围最广且最简的写法,可适用于要求用纯C或者C++来写代码的学校。其他书中可能还有其他的表示方法,为了简化记忆,只需要熟练掌握这一种写法,对考研要求已经足够了。有些题目可能需要在这个结构定义的基础上做一些修改,但万变不离其宗。

978-7-111-58746-0-Chapter06-13.jpg

图6-6 二叉树以链式存储结构存储

免责声明:以上内容源自网络,版权归原作者所有,如有侵犯您的原创版权请告知,我们将尽快删除相关内容。

我要反馈