二叉树的存储结构是怎样的?有哪些类型的存储结构?对应的c语言描述是?
发布网友
发布时间:2022-03-22 15:44
我来回答
共4个回答
懂视网
时间:2022-03-22 20:05
二叉链表存储结构是二叉树的一种存储方式。链表中结点的两个链域分别指向该结点的第一个孩子结点和第二个孩子结点。
二叉链表是树的二叉链表实现方式。二叉树是逻辑结构,二叉链表是二叉树的物理实现,两者之间的关系属于概念和实现,抽象和具体的关系。二叉树的顺序存储结构由一组连续的存储单元依次从上到下,从左到右存储完全二叉树的结点元素。对于一般二叉树,应将其与完全二叉树对应,然后给每个结点从1到i编上号,依次存储在大小为i到1的数组中。
热心网友
时间:2022-03-22 17:13
楼上回答的是树的存储,不是二叉树的存储,主要如下:
1、顺序存储:适用于完全二叉树,如果根从1开始编号,则第i结点的左孩子编号为2i,右孩子为2i+1,双亲编号为(i/2)下取整,空间紧密
2、二叉链表:适用于普通二叉树,每个结点除了数据外,还有分别指向左右孩子结点的指针,存储n个结点有n+1个空指针域,存储密度小于顺序存储,但是适用范围广,缺陷是正常遍历只能从双亲向孩子,退回来一般需要借助栈(或者用递归,其实也是栈)
3、三叉链表:同样适用于普通二叉树,结点除了数据外,还有左右孩子与双亲的指针,存储密度低于二叉链表,但是可以非常方便地在二叉树中遍历,不需要其他辅助工具
热心网友
时间:2022-03-22 18:31
1。对于完全二叉树就用数组表示法,结点i的左孩子为2*i,右孩子为2*i+1,双亲为i/2
2。双亲数组表示法。这个我没用过,大概是对每个结点记录其双亲,但是结点不一定是连续的,比如:
结点 双亲
1 0
4 1
3 4
5 2
2 1
嘛,这个只是从底向上的遍历比较简单,所以一般不用
3。孩子链表表示法
对于每个结点给予两个指针域分别指向其左孩子,右孩子,若指针域为空则表示没有这边的孩子。
详细的实现比较长懒的写了,随便找点资料好了。
基础的就这三种,一般用到的也是这样,其他也就是没有大改动只是加入一些域什么的而已。。。
以上纯手打
热心网友
时间:2022-03-22 20:06
看些数据结构就好啦!链表,队列,栈,树,图什么的吧!都可以用C语言,c++也可以哟