二叉树的链式存储结构 C语言中.二叉树的顺序存储结构和二叉链表,三叉链表存储结构各自的优缺点及适用场合.以及2叉树的顺序储存结?
C语言中.二叉树的顺序存储结构和二叉链表,三叉链表存储结构各自的优缺点及适用场合.以及2叉树的顺序储存结?
链式结构优点都是便于寻址,二叉链表缺点结构性开销随着数据结构的规模变大而变大(尤其是叶子节点都有2个NULL,即损失2*sizeof(ElemType*))
线性结构优点没有结构性开销,缺点个人感觉是插入和删除不够方便?
试用场合估计取决问题规模大小,即空间复杂度和时间复杂度
两个相互转化很简单,只需明白的就是顺序存储中:
当前节点的父节点Parent(CurrentPos) = (CurrentPos - 1) / 2 取下界
左孩子Left(CurrentPos) = 2*CurrentPos 1
右孩子Right(CurrentPos) = 2*CurrentPos 2
左兄弟 = CurrentPos - 1
右兄弟 = CurrentPos 1
转换时只需讲链式存储结构的数据域的数据拷贝到顺序存储结构对应的位置即可
怎么将二叉树顺序存储结构图转化为二叉树结构呢?
。而存储结构值的是:假设该结点在数组中的位置为i,则它的左儿子的位置为2i,右儿子为2i 1.(i从1开始)所以你只要创建一个数组,从链式存储的根节点开始,用中序遍历遍历树,按中序遍历的顺序存储在数组中。即可完成顺序存储结构的转化。相关的遍历你可以查看相关资料,中序遍历即访问顺序为左儿子-根-右儿子的顺序访问。希望对你有所帮助。
什么是二叉树的顺序存储?
此结构是将二叉树的所有结点, 按照一定的次序,存储到一片连续的存储单元中。 因此,必须将结点排成一个适当的线性序列, 使得结点在这个序列中的相应位置能反映出结点之间的逻辑关系。 这种结构特别适用于近似满二叉树。 在一棵具有n个结点的近似满二叉树中, 我们从树根起,自上层到下层,逐层从左到右给所有结点编号,就能得到一个足以反映整个二叉树结构的线性序列
二叉树的链式存储结构 二叉树的顺序存储表示 二叉排序树怎么构造
版权声明:本文内容由互联网用户自发贡献,本站不承担相关法律责任.如有侵权/违法内容,本站将立刻删除。