Хорошо, я прочитал все другие связанные вопросы и не могу найти тот, который помогает с Java.Я получаю общую идею от расшифровки того, что я могу на других языках;но мне еще предстоит разобраться.
Проблема: Я хотел бы выровнять сортировку (которая у меня работает с использованием рекурсии) и распечатать ее в общей форме дерева.
Такскажем, у меня есть это:
1
/ \
2 3
/ / \
4 5 6
Мой код распечатывает порядок уровней следующим образом:
1 2 3 4 5 6
Я хочу распечатать его так:
1
2 3
4 5 6
Теперь, прежде чем вы произнесете мне моральную речь о выполнении моей работы ... Я уже закончил свой проект AP Comp Sci, и мне стало любопытно, когда мой учитель упомянул о поиске в ширину.
Не знаюзнаю, поможет ли это, но вот мой код:
/**
* Calls the levelOrder helper method and prints out in levelOrder.
*/
public void levelOrder()
{
q = new QueueList();
treeHeight = height();
levelOrder(myRoot, q, myLevel);
}
/**
* Helper method that uses recursion to print out the tree in
* levelOrder
*/
private void levelOrder(TreeNode root, QueueList q, int curLev)
{
System.out.print(curLev);
if(root == null)
{
return;
}
if(q.isEmpty())
{
System.out.println(root.getValue());
}
else
{
System.out.print((String)q.dequeue()+", ");
}
if(root.getLeft() != null)
{
q.enqueue(root.getLeft().getValue());
System.out.println();
}
if(root.getRight() != null)
{
q.enqueue(root.getRight().getValue());
System.out.println();
curLev++;
}
levelOrder(root.getLeft(),q, curLev);
levelOrder(root.getRight(),q, curLev);
}
Из того, что я могу понять, мне нужно будет использовать общую высоту дерева и использовать счетчик уровня ...Единственная проблема в том, что мой счетчик уровня продолжает отсчитывать, когда мой levelOrder использует рекурсию для возврата по дереву.
Извините, если это слишком много, но некоторые советы были бы хорошими.:)