Java 二叉树数组迭代

Java 二叉树数组迭代,java,binary-tree,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 [1

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

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?)。

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

根->索引0

根目录左侧/索引0->索引1

根目录/索引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

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

是否有问题?您需要提供一些额外的上下文。它是通过数组表示二叉树。我认为不清楚第一个数字、第二个数字等的含义。我假设这些是您要添加到二叉树中的数字,但树上的顺序或预期空间不清楚。将二叉树存储在数组中是一个非常常见的想法,在进行少量搜索后应该会很快出现。如果你有一个关于它的特殊问题,也许你可以重新措辞?大部分答案取决于二叉树的确切类型,映射可能是按位的,但这只是一个猜测。顺便问一下:这是什么类型的遍历?它不是遍历。这只是一个简单的插入算法:搜索要插入的元素,如果没有什么可以继续,就在那里插入。从根开始,对于每个节点,如果所讨论的元素小于该节点上的元素,则向左移动,如果该元素大于该节点上的元素,则向右移动。
       50
      /  \
    40    60
  /
15
  \ 
  30
  /
 27