我正在实现 van Emde Boas 树,遇到一个情况,在构造函数中使用递归非常有用。
当我在树中创建根节点时,该节点将指向许多其他节点,这些节点将指向许多其他节点,以此类推。即使它们用 null 数据初始化,我仍然希望它们都存在。
编辑:回应评论时,我认为这可能是不好的实践,因为我们在分配内存时总是需要小心。在这种情况下,用户可能没有意识到分配新的这样的节点可能会产生什么影响,因此他们可能分配比他们想要的更多的内存?除此之外,我认为在构造函数中分配内存似乎有些奇怪/危险。
该代码通过递归地创建新节点,直到整个树被创建。这是一种不好的实践吗?如果是,那么在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);
}
}
}