Вот что я попробовал:
public int[] sortedArray() {
int[] array = new int[size()];
int index = 0;
traverseInorder(root, array, index);
return array;
}
private void traverseInorder(Node n, int[] array, int index) {
if (n != null) {
traverseInorder(n.left, array, index);
array[index++] = n.value;
traverseInorder(n.right, array, index);
}
}
Но вывод не верный.
Если я создаю дерево с этим вводом:
{1,5,8,10,12,15,20,22,25,36,30,40,28,38,48,45,50}
Вывод, который я получаю с помощью sortedArray
, будет таким:
[1, 5, 8, 10, 12, 15, 20, 22, 25, 36, 40, 48, 50, 0, 0, 0, 0]
Что я сделал не так?Я понимаю, что он пропускает все левые поддеревья с правой стороны от корня, но я просто не понимаю, почему ...