これは次のように、特定のコードを半分の時間を取っています
パッケージ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は= 右。 } } }