当前位置:首页 » 存储配置 » 判断数组是否适合存储在二叉树

判断数组是否适合存储在二叉树

发布时间: 2023-01-05 10:25:22

A. 完全二叉树为什么最适合顺序存储结构

顺序存储充分利用满二叉树的特性,即每层的节点数分别为1、2、4、8等等2i+1,一个深度为i的二叉树最多只能包含2i-1个节点,因此只要定义一个长度为2i-1的数组即可存储这颗二叉树。

对于普通的不是满二叉树的,那些空出来的节点对应的数组元素留空即可,因此顺序存储会造成一定的空间浪费。如果是完全二叉树,就不会有空间浪费的情况;若是只有右子树,那么会造成相当大的浪费。


二叉树算法思路:

1、如果树为空,则直接返回错。

2、如果树不为空:层序遍历二叉树。

3、如果一个结点左右孩子都不为空,则pop该节点,将其左右孩子入队列。

4、如果遇到一个结点,左孩子为空,右孩子不为空,则该树一定不是完全二叉树。

5、如果遇到一个结点,左孩子不为空,右孩子为空;或者左右孩子都为空;则该节点之后的队列中的结点都为叶子节点;该树才是完全二叉树,否则就不是完全二叉树。

B. 数组不适合作为任何二叉树的存储结构

这话不对,数组可以用来存储一棵满二叉树,也可以用它存储普通的二叉树(会浪费一些存储空间),还可以以下标形式模拟链式存储任意的二叉树(用表示下标的数字来代替lchild和rchild指针)。

C. 什么样的二叉树适合用数组存储

完全二叉树适合用数组存储,它在使用时可以没有存储单元的浪费。

D. 用一维数组存储二叉树有什么缺点

对存储空间造成极大的浪费。用一维数组存储二叉树缺点对存储空间造成极大的浪费,一棵深度为k的右斜树,它只有k个结点,却需要2^k-1个结点存储空间。二叉树,是树形结构的一个重要类型。许多实际问题抽象出来的数据结构往往是二叉树形式,即使是普通的树也能简单地转换为二叉树,而且二叉树的存储结构及其算法都较为简单,因此二叉树显得特别重要。

E. 写个算法判断一个二叉树用数组还是指针表示更合适

这个不叫用算法证明。。 好像没有这么证明的
是这样的数组是表示一组连续的存储空间 如果用数组来存储一个深度为k 且只有k个节点的单支树,就是没有度数为2的节点的树,至少需要2^k - 1个存储空间 而用指针 即链式存储空间 就只需要动态分配k个节点的存储空间 所以用指针表示二叉树更好 , 假设如果能用算法写的话 思路就是 用2种不同的方法分别建立相同节点个数的二叉树,然后比较2种方法所用存储空间的大小。

F. 数据结构——二叉树

二叉树 在一般的树上加了两个限制条件:

顺序储存结构用一个数组来存放一棵二叉树,这种方式最适合 完全二叉树

定义如下

若某结点编号为i,且存在左儿子和右儿子,则他们分别对应

定义如下

G. 怎样编写一个程序,把一个有序整数数组放到二叉树中

将有序数组存储到二叉树中,可以考虑用二分法建树。这样建出来的二叉树高度最矮。
TreeNode *BuildTree(int array[], int low, int high)
{
if (low > high)
return NULL;
TreeNode *tmp = (TreeNode *)malloc(sizeof(TreeNode));
tmp->data = array[(low + high) / 2)];
tmp->left = BuildTree(array, low, (low + high) / 2 - 1);
tmp->right = BuildTree(array, (low + high) / 2 + 1, high);
return tmp;
}

热点内容
两台服务器如何建立双向连接 发布:2025-07-27 23:18:26 浏览:146
河间压缩机 发布:2025-07-27 23:13:39 浏览:983
客户ip服务器连接不上 发布:2025-07-27 23:05:33 浏览:352
读写分离java 发布:2025-07-27 23:05:29 浏览:89
pythonjson乱码 发布:2025-07-27 23:04:33 浏览:249
des算法代码c语言 发布:2025-07-27 22:58:08 浏览:116
android运行时 发布:2025-07-27 22:39:21 浏览:957
音频剪辑需要哪些配置 发布:2025-07-27 22:38:26 浏览:463
小盒编程下载 发布:2025-07-27 22:22:53 浏览:415
c语言统计数字字符个数 发布:2025-07-27 22:22:09 浏览:832