二叉树数组迭代

时间:2012-04-16 13:28:41

标签: java binary-tree

我有这个输出,我只需要理解,他们如何使用这些索引来表示二叉树

How many numbers?: 6

Enter 1st number: 50
Enter 2nd number: 60
Enter 3rd number: 40
Enter 4th number: 15
Enter 5th number: 30
Enter 6th number: 27

BST Array:
[0]     50
[1]     40
[2]     60
[3]     15
[8]     30
[17]    27

它从0,1,2,3开始然后突然变为索引8然后是17(所有其他索引都是空的我猜,但为什么索引8然后是17?)。

1 个答案:

答案 0 :(得分:2)

这似乎是一个没有平衡的普通二叉树。 我想这是这样的:

root - > index 0

root / index 0左侧 - >指数1

root / index 0的权利 - >指数2

索引1左侧的

- >指数3

索引1的权利 - >指数4

索引2左侧的

- >指数5

索引2的权利 - >指数6

索引3的左侧 - >指数7

索引3的权利 - >指数8

索引4左侧 - >指数9

索引4的权利 - >指数10

...

索引i的左边 - > 2 * i + 1

索引i的权利 - > 2 * i + 2

例如:

       50
      /  \
    40    60
  /
15
  \ 
  30
  /
 27

例如,15位于索引3. 30是它的右子,因此将位于索引2 * 3 + 2 = 8. 27是索引8处元素的左子节点,因此位于索引2 * 8 + 1 = 17。