シーケンスN進ツリートラバーサル

そのノードの値を返すN分木、与えられたシーケンストラバーサルを(すなわち、左から右に、層トラバーサルによって層です)。

例えば、与えられました  3叉树 :

そのトラバーサル配列を返します。


     [1]、
     [3,2,4]、
     [5,6] 
]

説明:

  1. ツリーの深さを超えません  1000
  2. ツリー内のノードの総数を超えていません  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は<> (); 
            } 
        } 
        戻り値のリスト。
    } 
}

 

おすすめ

転載: www.cnblogs.com/czsy/p/10994617.html