不完整的二叉树作为数组

Posted

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了不完整的二叉树作为数组相关的知识,希望对你有一定的参考价值。

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

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

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

谢谢你的帮助。

答案

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

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

以上是关于不完整的二叉树作为数组的主要内容,如果未能解决你的问题,请参考以下文章

二叉树 ,你是完整的吗?

算法题654:构造一棵最大的二叉树

二叉树的遍历

完整的二叉树交换子级和父级错误

折半查找的二叉判定树是否完全二叉树?为啥?

剑指Offer题目索引