【发布时间】:2012-06-25 18:53:56
【问题描述】:
我想将一棵树存储在一个数组中,同时能够从当前索引轻松计算父索引和子索引,就像在二叉堆中一样。这棵树有一个根节点,它位于第 0 层。树有 N 层,第 i 层的每个节点都有 n(i) 个子节点。
这可以吗?怎么样?
编辑:
澄清:您可以在单个数组中存储(完整)二叉树,即存储堆,而无需显式存储索引。根节点位于 0,位置 i 的节点的子节点位于 2i+1 和 2i+2。因此,您可以从父节点的索引中计算子节点,而实际上不需要存储索引。数据结构隐式在数据中,见http://en.wikipedia.org/wiki/Binary_heap#Heap_implementation
我的问题:您能否将其概括为更通用的树,如上所述。
【问题讨论】:
-
您正在寻找的可能与简洁的数据结构有关,即使用接近信息论最小位数的数据结构表示。我不知道有任何这样的表示,但我很想知道它们是否存在。
标签: data-structures