使用1D数组表示非二叉树的方法
当节点数量有限且数量较少时,可以使用一维数组表示二叉树 而索引为i的节点在索引2 * i和2 * i + 1处有两个子节点。 如何以相同的方式使用一维数组存储非二叉树(当一个节点有两个以上的子节点时)? 我想到了使用这种方式来存储最多3个儿子的树,其中节点的索引为i,其儿子分别为3 * i,3 * i + 1和3 * i + 2。剩下很多空的(未使用的)数组单元。 有更好的方法吗?
答案 0 :(得分:0)
这是一种将所有节点打包为一维数组的解决方案。
每个节点由可变数量的数组单元组成。节点的第一个单元格是其子节点的计数C。接下来的C单元包含数组中其子节点的第一个单元的索引。
例如:
Indexes: 0 1 2 3 4
Values: 2 3 4 0 0
是具有3个节点的图; 1个节点具有2个子节点。第一个节点位于单元索引0处,其值为2,即其子节点数。接下来的2个值是子节点3和4的索引。索引3和4的单元格的值为0,因为它们没有子节点。
答案 1 :(得分:-1)