そのノードの値を返すN分木、与えられたシーケンストラバーサルを。(すなわち、左から右に、層トラバーサルによって層です)。
例えば、与えられました 3叉树
:
そのトラバーサル配列を返します。
【 [1]、 [3,2,4]、 [5,6] ]
説明:
- ツリーの深さを超えません
1000
。 - ツリー内のノードの総数を超えていません
5000
。
/ * //ノードの定義。 クラスノード{ 公共のint valの; 公共の一覧<ノード>子供たち。 パブリック・ノード(){} パブリック・ノード(INT _val、リストの<node> _children){ ヴァル= _val。 子どもたち= _children。 } }。 * / クラスソリューション{ 公共リスト<リスト<Integer型>> LEVELORDER(ノードルート){ リスト <リスト<Integer型>>一覧= 新しい LinkedListは<> (); もし(ルート== nullの)リターンリスト。 キュー <ノード>キュー= 新しい LinkedListの<>(); queue.offer(ルート)。 int型第= 1 。 int型 = 0秒。 一覧 <整数> TEMP = 新しい LinkedListは<> (); 一方、(!queue.isEmpty()){ ノードノード = queue.poll()。 最初に - 。 temp.add(node.val)。 反復子 <ノード>イテレータ= node.children.iterator()。 一方、(iterator.hasNext()){ ノードCUR = iterator.next()。 queue.offer(CUR)。 二 ++ ; } であれば(最初== 0 ){ list.add(TEMP)。 第一 = 二; 第二 = 0 。 一時 = 新しい LinkedListは<> (); } } 戻り値のリスト。 } }