[英]Compare space complexity of these binary tree node implementations?
实施1:
struct treenode{
int data;
struct treenode children[2];
}
实施2:
struct treenode{
int data;
struct treenode *children;
}
这是我的想法:
实现 2 在空间复杂度方面会更好,因为
然而,每个节点最终只携带一个 int 和一个指针用于两种实现,所以空间复杂度不会有太大差异,对吧? 我使用实现 1 来避免使用双指针和混淆的可能性(lol ...),当我尝试构建具有大量数据的树时,我的程序最终被“杀死”。 我的很多同学都没有这个问题,我偏离了prof暗示我们应该构建树的方式(使用实现2)。
因为我使用了实现 1,所以我有这个问题的可能性很大吗? 如果两个节点最终携带相同的东西,为什么会出现更多问题? 是因为大数据导致大量叶节点在一种情况 (1) 中被分配,但在另一种情况 (2) 中没有吗? 或者我对每种情况下空间复杂性如何不同的解释完全错误?
您是否尝试过编译实现 1?
让我们考虑一下。 实现 1 中struct treenode
的大小是多少?
假设data
是 4 个字节。 children
的尺寸是多少? 它是一个struct treenode
的 2 元素数组,因此它必须是struct treenode
大小的 2 倍。 那么struct treenode
的大小是多少?
假设data
是 4 个字节...等一下。 你可以在这里看到问题。
当我写这个答案时,实现 1 被定义为:
struct treenode{
int data;
struct treenode children[2];
}
我怀疑这不是 OP 编写的实际程序中的内容,因为它不会编译。 或许他的意思是:
struct treenode{
int data;
struct treenode *children[2];
}
但在那种情况下,我想知道实现 2 是什么。
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.