2012-12-12 34 views
1

我试图将基于列表的树实现转换为基于数组的实现,其中第i个索引处的父节点,第2ith索引处的左侧子节点以及第2i + 1个索引处的右侧子节点。由于某些原因,转换会导致节点数量较多的树数据丢失。我想知道在执行此操作时需要检查的所有边界条件。谢谢!二叉树的数组实现

+0

'list'和'array'建议你已经有了一种语言。也许你可以用那种语言来标记你的问题? –

+0

那么,如果所有节点都有相同的子节点数,那么它就是简单的数学运算:root @ 0,L @ 1,R @ 2,LL @ 3,LR @ 4,RL @ 5,RR @ 6 - 所以你可以看到模式 - 左边的孩子在2 * i + 1,右边的孩子在2 * i + 2。如果您的方法正确实施,没有问题。关于边界条件:您可以在最大N代处求和(2 ** 0 ... N)<= arrayLength。 –

+0

只有“更多节点”?多大?你没有受到整数溢出的困扰,对吗? – derobert

回答

2

假设你的语言使用从零开始的索引节点i的孩子进入2i + 12i + 22i2i + 1。后者适用于基于单一指数的指数。

0

你把头放在0还是1?选择'0'肯定会导致问题,除非你调整你的公式。