Preorder, Postorder, Inorder Traversal
以下はいずれもDFSの再帰関数で結構シンプルに実装できる
preorder traversal
ポーランド記法と同じ巡回方法
postorder traversal
逆ポーランド記法と同じ巡回方法
stackを使って実装できる
inorder traversal
数式でいえば
人間に馴染み深い 1 + (2 - 3)みたいな記法
前者2つの方法だとカッコがいらない
数字や演算子をスタックに置く順番で指定できてるから.
再帰関数がシンプルだけど、二分木に存在するノードが膨大なケースもある
処理されるループが深すぎてstack overflowする可能性が出てくる
その場合
再帰ではなくwhile等で実装することになる
実コードとかはleet codeで丁寧に解説してあった
その他、参考
https://qiita.com/yumura_s/items/ddb0d143fb0e9a082891