不完整的二叉树作为数组

问题描述 投票:0回答:1

在大学里,我们被问到如何将不完整的二叉树保存到数组中。左边儿童的指数为2i + 1,顶点儿童的指数为2i + 2。父节点的floor((i-1)/ 2)。现在的第一个问题是我们如何表示“缺失”的顶点。

我认为只需将“null”保存到Array中即可实现。有没有更好的解决方案?

第二个问题是,我显然不知道该回答什么。有人问为什么没有人真正这样做,如果我们从第一个问题那样实现问题就会出现严重的问题。

谢谢你的帮助。

arrays tree theory
1个回答
0
投票

如何表示缺失顶点的答案取决于您的语言。在Java中,如果您的数组是Objects之一,那么您肯定可以使用null。如果它是一个基元数组,则需要某种可以表示null的标记值。如前所述,根据树的结构,使用数组表示非完整的二叉树可能会造成浪费。

第二个问题的答案可能就是记忆的上述问题。话虽如此,还有其他方法可以将一个非完整的树存储在一个不太容易记忆的数组中,但它们比简单地“2i + 1处的左孩子和2i + 2处的右孩子”更复杂。

© www.soinside.com 2019 - 2024. All rights reserved.