在大学里,我们被问到如何将不完整的二叉树保存到数组中。 左边儿童的指数为2i + 1,顶点儿童的指数为2i + 2。父节点的floor((i-1)/ 2)。 现在的第一个问题是我们如何代表"缺失"顶点。
我认为这可以通过保存" null"来实现。进入数组。有没有更好的解决方案?
第二个问题是,我显然不知道该回答什么。有人问为什么没有人会这样做,如果我们从第一个问题中解决这个问题就会出现严重的问题。
感谢您的帮助。
答案 0 :(得分:0)
如何表示缺失顶点的答案取决于您的语言。在Java中,如果您的数组是Objects之一,那么您肯定可以使用null。如果它是一个基元数组,则需要某种可以表示null的标记值。如前所述,根据树的结构,使用数组表示非完整的二叉树可能会造成浪费。
第二个问题的答案可能是记忆的上述问题。话虽如此,还有其他方法可以将一个非完整的树存储在一个不太容易记忆的数组中,但它们比简单地“2i + 1处的左孩子和2i + 2处的右孩子”更复杂。