我有问题例如我想用数组实现二叉树我想了解什么将为左子和rigth子索引?我的数组是0基于我想在树中使用数组搜索可以任何人帮助我吗?
答案 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。它是一棵树,它将数据组织成树,但没有直接引用孩子,可以从位置推断出来。