バイナリツリートラバーサル非再帰
達成するためにスタックを使用して、非再帰的なバイナリツリートラバーサル
- 順序で始まることだったので、あなたはノード遭遇にアクセスする必要があり、次のステップは、ツリーの左側の枝に沿って下流でなければなりません。
- しかし、ノードや枝が訪問したので、記録する必要がある、とスタックにノードなかったです。
- ヌルツリーがバックトレースされ、それを横断するように、バイナリツリーのように、スタックや枝を取り除きます。
コード:
1 DEF :(T、PROC)プレオーダー 2つの S = スタック() 3 ながら tはありません ではないいずれか、よない)(s.is_empty: 4 ながら tはありません ないなし: 5 PROC(t.data) 6 場合t.right。 7 s.push(t.right) 8 T = t.left 9 T = s.pop()
ジェネレータ関数を横断
データ収集構造を考慮すると、Pythonでプログラムを書くとき、常にイテレータを考える必要があります。以下は、バイナリツリーのイテレータを訪れ非再帰的な実装です。
1 DEF (T)プレオーダー: 2 秒= スタック() 3 ながら tはありません ではないいずれか、 しないs.is_empty(): 4 ながら tはありません ないなし: 5 であれば:t.right 6 s.push(t.right) 7 収率t.data 8 T = t.left 9 T = s.pop()