关于树的问题

时间:2010-05-28 16:26:00

标签: algorithm

我有问题例如我想用数组实现二叉树我想了解什么将为左子和rigth子索引?我的数组是0基于我想在树中使用数组搜索可以任何人帮助我吗?

3 个答案:

答案 0 :(得分:4)

left child = parent * 2 + 1

右孩子=父母* 2 + 2

我想这是作业,所以我会让你弄清楚搜索算法。

答案 1 :(得分:4)

要将二叉树实现为数组,请将节点i的左子节点放在2*i+1,将右子节点放在2*i+2

例如,这里有6个节点是相应数组的索引

          0
          |
      ---------
      |       |
   ---1--   --2--
   |     |  |    |
   3     4  5    6

答案 2 :(得分:0)

我认为您正在寻找。或者至少,当数组结构不足以满足您的需求时,您使用树,因此您可以尝试在数组内部实现树,但由于每个节点都包含对其子节点的引用而不需要索引,因此它没有多大意义

但是堆是一个也可以看作二叉树的数组,请查看here。它是一棵树,它将数据组织成树,但没有直接引用孩子,可以从位置推断出来。