Я изучаю деревья на Java и наткнулся на некоторые запутанные строки в книге, которую изучаю. Диаграмма дана для обхода упорядоченную это:Уточнение по обходному пути в двоичном дереве поиска
код для обхода (рекурсивный) является:
private void inOrder(Node leftRoot) {
if (localRoot != null) {
inOrder(localRoot.leftChild);
System.out.println(localRoot.iData + " ");
inOrder(localRoot.rightChild);
}
}
Линии Я смущен являются:
Теперь мы вернулись к inOrder (A), просто вернувшись из прохода слева от левого ребенка. Мы посещаем A, а затем снова вызываем inOrder() с C как аргумент, , создавая inOrder (C). Как inOrder (B), inOrder (C) не имеет детей, поэтому шаг 1 возвращается без каких-либо действий, шаг 2 посещает C, а шаг 3 возвращает без каких-либо действий. inOrder (B) теперь возвращается к inOrder (A).
Однако inOrder (A) теперь выполнен, и он возвращается, и весь обход завершен. Порядок, в котором были посещены узлы, - A, B, C; они были посещены inorder. В двоичном дереве поиска это будет порядок восходящих клавиш.
Я выделил детали, на которых я застрял. Во-первых, я думаю, что на третьем этапе inOrder (C) [а не inOrder (B)] возвращается к inOrder (A). А во-вторых, порядок, в котором были посещены узлы, должен быть B -> A -> C.
Пожалуйста, помогите мне!
С System.out.println (localRoot.iData + ""); во второй строке, этот отпечаток (или посещение) должен быть B-> A-> C. Но реальный порядок доступа A-> B-> C. –
Вы верны в обеих претензиях. – Shloim
Какая книга? – Shloim