计算二叉树

时间:2017-03-26 13:06:54

标签: algorithm ipython binary-tree

我想计算二叉树的高度,而不是使用占用每个叶子最大深度的算法。 这是我在eache节点上的结构 [content, left_son, right_son, father_node] 表示每个节点的大小为4的数组列表。 left_son,right_son和father分别是列表中左子节点,右子节点和父节点的索引

1 个答案:

答案 0 :(得分:0)

这确实可行,但您必须稍微修改数据结构: 您可以将二进制树存储在这样的数组中:

  • 将根节点的值存储在索引0。
  • 存放左边的孩子 索引为2 * i + 1的节点,其中i是当前节点的索引; 正确的孩子去索引2 * i + 2.

如果你这样做

  • 节点的父节点保存在索引(i-1)/ 2。
  • 你的数组需要长度为2 ^(h + 1)-1,其中h是树的高度。

所以你要做的就是跟踪最后一次使用的"数组中的索引并使用上面的公式计算高度。

2^(h+1)-1 = l => h = ceil(ld(l+1))-1

你是有效使用的数组的长度,并用对数2表示对数。