矢印の方向に二進木を探します

これは次のように、特定のコードを半分の時間を取っています

パッケージcom.trs.codetool.core。


輸入はjava.util.ArrayList;
輸入java.util.LinkedList;
輸入はjava.util.List;
輸入java.util.Queue;

/ ** 
 * @author zheng.changgang
 * @date 2019年12月18日9時44分
 * / 
パブリック クラスTreeNodeTest {

    パブリック 静的 ボイドメイン(文字列[]引数){
        ノードヘッド = 新しいノード(1 )。
        head.leftは = 新しいノード(2 )。
        head.rightは = 新しいノード(3 )。

        head.left.leftは = 新しいノード(4 )。
        head.left.rightは = 新しいノード(5 )。

        head.right.rightは = 新しいノード(6 )。

        head.left.left.leftは = 新しいノード(7 )。
        head.left.left.rightは = 新しい新しいノード(8 );
         // プリント各行
        printNode(ヘッド)。

    }

    プライベート 静的 無効printNode(ノードヘッド){
        キュー <ノード>キュー= 新しい LinkedListは<> ();
        リスト <リスト<Integer型>> resultList = 新しいArrayListを();
        一覧 <整数> rowList = 新しいArrayListを();
        queue.offer(ヘッド)
        最後のノード = ヘッド。
        ノードNLAST = ヘッド。
        しばらく(!queue.isEmpty()){
            ノードCUR = queue.poll()。
            もし(cur.left!= nullの){
                queue.offer(cur.left)。
                NLAST   = cur.left。
            }
            もし(cur.right!= nullの){
                queue.offer(cur.right)。
                NLAST   = cur.right。
            }

            もし(CUR == 最後){
                // するSystem.out.println(cur.getValue())。
                最後= NLAST。
                rowList.add(cur.getValue())。
                resultList.add(rowList)。
                rowList = 新しいArrayListを();
            } {
                rowList.add(cur.getValue())。
                // System.out.print(cur.getValue()+ "「); 
            }
        }
        以下のためにINT I 0 =; I <resultList.size(); I ++ ){
            一覧 <整数>リスト= resultList.get(I);
            もし(I%2 == 0 ){
                 ためINT J = 0; J <はlist.size(); J ++ ){
                    System.out.print(list.get(J) +」 " );
                }
            } {
                 ためINT J =はlist.size() - 1; J> = 0; j-- ){
                    System.out.print(list.get(J) +」 " );
                }
            }
            System.out.println();
        }
    }

    静的 クラスノード{
         int型の値。
        ノードは、左;
        ノードを右;

        パブリックノード(int型の値){
             この .VALUE = 値。
        }

        公共 INT のgetValue(){
             戻り値。
        }

        公共 ボイドのsetValue(整数値){
             この .VALUE = 値。
        }

        パブリックノードgetLeft(){
             リターン左;
        }

        公共 ボイドsetLeft(ノード左){
             この .LEFT =は左;
        }

        パブリックノードGetRightの(){
             戻り右。
        }

        公共 ボイドsetRight(ノード右){
             この .RIGHTは= 右。
        }
    }
}

おすすめ

転載: www.cnblogs.com/zcg1051980588/p/12066114.html