【发布时间】:2017-07-17 09:06:28
【问题描述】:
在大学里,我们被问到如何将不完整的二叉树保存到数组中。 顶点的左孩子的索引为 2i+1,右孩子的索引为 2i+2。父节点的 floor((i - 1)/2)。 现在的第一个问题是我们将如何表示“缺失”的顶点。
我认为这可以通过将“null”保存到数组中来实现。有没有更好的解决方案?
第二个问题是我显然不知道该回答什么。有人问为什么没有人会真正这样做,如果我们从第一个问题中实现这样的问题,可能会出现严重的问题。
感谢您的帮助。
【问题讨论】:
-
当你说你会使用“null”时,你是什么意思?对于从完整树中丢失的所有节点,还是只是丢失子树的根节点?前者更简单,但可能比表示不完整树所需的内存要多得多;后者更复杂,但占用的空间与树中实际的节点数成正比。