问题描述
下面是我在项目中使用的二叉树的表示。底部是叶子节点(橙色框),每个级别是下面的子代的总和。
因此,最左侧节点上的3是1和2(左右子元素)的总和,10是3和7(再次是左右子元素)的总和。
我想做的是,将这棵树存储在一个平面数组中,而不使用任何指针。因此,此数组基本上是一个整数数组,包含2n-1个节点(n是叶节点的数量)。
因此根元素的索引为0(我们称其为p),其左子元素的索引为2p + 1,右子元素的索引为2p + 2。请参阅Binary Tree (Array implementation)
如果我事先知道叶子值的数量,那么一切都会很好,但是我似乎找不到一种将树存储在动态扩展数组中的方法。
例如,如果我需要将9作为第9个元素添加到数组中,则结构需要更改,并且我需要重新计算所有我不使用的索引,因为数组中可能有成千上万个元素时间。
有人知道使用该实现处理动态数组的实现吗?
编辑:
以下是向数组添加新元素时发生的情况的演示。 36是以前的根,现在是第二级元素,新的根数组[0]是114,这会触发新的布局。
解决方法
暂无找到可以解决该程序问题的有效方法,小编努力寻找整理中!
如果你已经找到好的解决方法,欢迎将解决方案带上本链接一起发送给小编。
小编邮箱:dio#foxmail.com (将#修改为@)