【问题标题】:Array implementation of a binary tree二叉树的数组实现
【发布时间】:2012-12-12 16:19:10
【问题描述】:

我正在尝试将基于列表的树实现转换为基于数组的实现,其中父项位于第 i 个索引处,左子项位于第 2 个索引处,右子项位于第 2i+1 个索引处。由于某种原因,转换会导致节点数较多的树的数据丢失。我想知道在实现这一点时我需要检查的所有边界条件。谢谢!

【问题讨论】:

  • listarray 建议您已经记住了一种语言。也许您可以用该语言标记您的问题?
  • 好吧,如果所有节点都有相同数量的子节点,这很简单:root @ 0, L @ 1, R @ 2, LL@3,LR@4,RL@5,RR@ 6 - 所以你可以看到模式 - 左孩子在 2*i + 1,右孩子在 2*i + 2。如果你的方法实施得当,就没有问题。关于边界条件:您最多可以有 N 代,其中 sum(2**0...N)
  • 只有“更多的节点”?多大?你没有遭受一些整数溢出,是吗?

标签: algorithm tree


【解决方案1】:

假设您的语言使用从零开始的索引,则节点 i 的子节点进入 2i + 12i + 2 而不是 2i2i + 1。后者适用于基于 1 的索引。

【讨论】:

    【解决方案2】:

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

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 2012-01-09
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多