java - 二叉树数组迭代

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

最佳答案

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

根 -> 索引 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

示例:

       50
      /  \
    40    60
  /
15
  \ 
  30
  /
 27

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

关于java - 二叉树数组迭代,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/10175083/

相关文章:

java - Weld 不注入(inject)

algorithm - 每一层的链接树节点

c - 错误 : struct has no member named X

data-structures - 从中序和层序遍历构造二叉树

java - 从 lib 目录加载 jar 文件的顺序

Java客户端无法连接Zookeeper和HBase

java - 如何创建 Lagom 项目的可执行 jar

java - 在Java中将变量添加到sql语句中

algorithm - 如何使用层序遍历序列构造二叉树

c - BST 二叉树删除 C 中值 = 0 的叶子的函数