蠡口117。各ノードIIで次の右ポインタの取り込み

Likou継続116。この質問は、長い再帰的に練習のように考えることはできません。私は、階層トラバーサルを考え、次の操作を実行するためにリサイクルすることができます。

  1)キューに左から右に、事前に、左側の要素から飛び出すから各層のデータ。

  2)要素は、要素の非空の一番右の層である場合、それは何もする必要はありませんが、そうでない場合は、次の前のように、チームの後にポップの最初の要素。

  3)予め非空きキューの周りに子供が次の層の動作を調製しました。

現在の層の右端要素は左端の次の下位レベルではないので、現在の層割り当ての要素だけ各サイクルは、それを扱うことができるループのために使用することに注意してください。この質問は、Li口116を解決するために使用することができます。

クラス溶液(オブジェクト):
     DEF 接続(自己、根):
         "" " タイプルート:ノード
        :RTYPE:ノード
        """ 
        もしルート==なし:リターン(なし)
        Q = collections.deque([ルート])
         一方Q:
            サイズ = LEN(Q)
             用の I における範囲(サイズ):
                予備 = q.popleft()
                 場合 pre.next = iはサイズ1 < Q [0]
                 場合pre.left:q.append(pre.leftを)
                 の場合pre.right:q.append(pre.right)
         リターン(ルート)

 

おすすめ

転載: www.cnblogs.com/Leisgo/p/11706567.html