簡體   English   中英

線程二進制搜索樹Java

[英]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類本身中包含標志。

順便說一下,將布爾表達式與常量值truefalse比較只是一種糟糕的方式。 例如

while( e == false )

更有效地表示為

while( !e )

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM