[英]Threaded Binary Search Tree Java
我設法通過它的插入方法創建了一個線程化的二進制搜索樹。 我現在需要遍歷樹並按順序打印。 我有可以工作的代碼,但是我使用了一個布爾標志來確定是否已打印該特定節點。 對於此分配,它不能是遞歸的。 我想知道是否存在一種將所有布爾標志完全清除為false的可能方法,因為如果我再次嘗試打印,它將而且不會起作用。 有什么建議么? 這是我的顯示方法的副本。
public void display(){
Node parent=top;
Node current=top;
while (current != null){
parent = current;
current = current.getLeft();
}
System.out.println(parent);
current=parent.getRight();
while(current!= null){
while(current.isHasLeftThread()==false && current.getLeft().hasBeenHere()==false){
parent = current;
current=current.getLeft();
}
System.out.println(current);
current.setBeenHere(true);
current=current.getRight();
System.out.println(current);
current.setBeenHere(true);
current = current.getRight();
}
}
您可以每次使用新的Collections.newSetFromMap( new IdentityHashMap< Node, Boolean >() )
對訪問的節點進行簿記,而不是在Node
類本身中包含標志。
順便說一下,將布爾表達式與常量值true
或false
比較只是一種糟糕的方式。 例如
while( e == false )
更有效地表示為
while( !e )
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.