我正在实现 van Emde Boas 树,并且遇到了在构造函数中使用递归非常有用的情况。
当我在树中创建根节点时,该节点将具有指向许多其他节点的指针,这些节点将指向许多其他节点,依此类推。即使这些是用空数据初始化的,我仍然希望它们都在那里。
编辑:在回答评论时,我认为这可能是不好的做法,因为我们在分配内存时总是需要小心。在这种情况下,用户可能不知道分配新的此类节点可能产生的影响,因此他们可能会分配比预期更多的内存?除此之外,我认为在构造函数中分配内存似乎很奇怪/危险。
代码递归地创建新节点,直到创建完整的树。这是一个不好的做法吗?如果是这样,有没有更好的方法在 Java 中做到这一点?
//Constructor
public VEBNode(int universeSize)
{
this.universeSize = universeSize;
min = vEBTree.NULL;
max = vEBTree.NULL;
if(universeSize <= 2)
{
summary = null;
cluster = null;
}
else
{
int childUnivereSize = (int)Math.sqrt(universeSize);
summary = new VEBNode(childUnivereSize);
cluster = new VEBNode[childUnivereSize];
for(int i = 0; i < childUnivereSize; i++)
{
cluster[i] = new VEBNode(childUnivereSize);
}
}
}