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)
リターン(ルート)