Подождите, это бинарное дерево поиска, поэтому оно уже отсортировано.
Тогда вам нужно пройтись по дереву.
Учитывая, что у вас есть что-то вроде:
4
/ \
2 6
\ / \
3 5 9
Чтобы вставить его, вам необходимо:
Учитывая корень дерева
- A. Если дерево пустое, вставлять нечего.
- B. Если не ноль:
- B.1 Вставить все слева
- B.2 Вставить корень дерева
- B.3 Вставить все справа
Что бы выглядело так:
void walkAndInsert(tree, array) {
if (tree == null) {//A
return
} else { //B
walkAndInsert(tree.left) //B.1
array.add(tree.root) //B.2
walkAndInsert(tree.right) //B.3
}
}
Таким образом, применяя эти шаги к массиву:
Является ли дерево нулевым? Нет, затем выполните шаг #B (вставьте все слева, root и все справа)
//B
tree =
4
/ \
2 6
\ / \
3 5 9
array =[]
Берём левую ветвь и повторяем процесс (шаг # B.1, вставляем все левые):
Является ли дерево нулевым? Нет, затем выполните # B
//B.1
tree =
2
\
3
array =[]
Поскольку левая ветвь равна нулю, следующее выполнение будет выглядеть так:
Является ли дерево нулевым? да, тогда верните
//A
tree =
array = []
Это завершит шаг B.1, теперь мы можем перейти к шагу B.2, вставить root
//B.2
tree =
2
\
3
array =[2]
После шага B.3 вставить все справа
Является ли дерево нулевым? Нет (там 3),
//B.3
tree =
3
array =[2]
Затем выполните # B.1 для этого дерева
Дерево пусто? Да, это завершает это B.1
//A
tree =
array =[2]
Теперь в B.2 мы вставляем этот корень
Является ли дерево нулевым? Нет (там 3),
//B.2
tree =
3
array =[2,3]
И, наконец, мы идем к B.3 и вставляем все справа
Но там ничего нет, поэтому мы просто возвращаем
//A
tree =
array =[2,3]
Это завершает левую ветвь нашего самого начального дерева.
Итак, после завершения B.1 в нашем исходном дереве мы выполняем B.2, и наши данные выглядят следующим образом:
// B.2 on the initial tree
tree =
4
/ \
2 6
\ / \
3 5 9
array =[2,3,4]
И мы повторяем с правой стороны
Нуль? нет, тогда B на ветке с 5, вставьте 6 и шаг B на ветке с 9
//B.3
tree =
6
/ \
5 9
array =[2,3,4]
// B.1
tree =
5
array =[2,3,4]
// A
tree =
array =[2,3,4]
// B.2
tree =
5
array =[2,3,4,5]
// B.2
tree =
6
/ \
5 9
array =[2,3,4,5,6]
// B.3
tree =
9
array =[2,3,4,5,6]
// A
tree =
array =[2,3,4,5,6]
// B.2
tree =
9
array =[2,3,4,5,6,9]