2010-05-11 3 views
2

Я пытаюсь выяснить, как совершить обход предписаний Btree. Я знаю, что в общем обход работает так:Обход предварительного кодера Btree

preorder(node) 
{ 
print value in node 
preorder(left child) 
preorder(right child) 
} 

Что сбивает с толком меня, как сделать эту работу с ВТКЕЕМ, так как в каждом узле имеется несколько значений и несколько указателей ребенка. При печати значений все значения в узле печатаются перед тем, как спуститься в левый ребенок?

Каждого узел выглядит следующим образом:

child1 value1 child2 значение2 child3 value3 child4

Кроме того, почему кто-то хотят сделать обход в виде ВТКЕЯ, так как симметричный обход является то, что будет отображать значение в порядке возрастания?

+1

«... почему кто-то хочет совершить обход предварительного заказа Btree ...». Я не знаю. Ты спрашиваешь, как это сделать; Я предполагаю, что у вас есть мотивация для этого. Может быть, это домашнее задание? –

+0

В btree есть ровно два дочерних указателя, один для левого ребенка и один справа. Значения печатаются в том порядке, в котором ваши коды печатают их. Btrees может использоваться для вещей * other *, чем для хранения отсортированных данных. – WhirlWind

+0

Btrees не являются бинарными деревьями; каждый узел может иметь более двух указателей. Количество указателей в каждом узле больше, чем количество ключей в каждом узле. – neuromancer

ответ

2

Распечатайте все значения в текущем узле в определенном порядке (что зависит от вас, правда, хотя слева направо - разумное значение по умолчанию), затем посетите каждый дочерний узел (опять же, заказ зависит от вас).

Смежные вопросы