これは非常に単純かもしれませんが、すべてのトラバーサルタイプのバイナリツリー(プレーン、ソート、バランス)のコンテキストだと思いました。
- 深さ優先予約
- 深さ優先順
- 深さ優先順
- 幅優先
事前注文と事後注文の実際の有用性は何ですか?つまり、事前順序および/または事後順序のトラバーサルが他の2つよりも(いくつかの)利点をもたらすバイナリツリーのタイプおよび/または構成がありますか?
AFAICS、特定のタイプとバイナリツリーの構成があります。これらに対して、順序と幅優先が特定の利点をもたらす可能性があります。
バランスの取れたバイナリツリーの場合、深さ優先のトラバースは幅優先と比較して使用するメモリストレージスペースが少なくなります(たとえば、6または7ノードのバランスの取れたバイナリツリーでは、高さが2であるため、深さ優先のトラバーサルは最大で任意の時点で2つのノード、最後のレベルには3つまたは4つのノードがあるため、幅優先スキャンでは、ある時点で最大3つまたは4つのノードを格納する必要があります。この場合、インオーダートラバーサルを使用すると、メモリの使用量が最小になり、ノードを自然な順序で訪問します。
バランスの取れていない二分木の場合、最悪の挿入シナリオに近い場合、幅優先で走査すると、深さ優先の走査に比べて使用するメモリが少なくなります。したがって、この場合、幅優先の方が有利です。順序通りのトラバーサルには、値を自然な順序で訪問するという利点があります。
ただし、トラバース前後が他の2つよりも有利になる状況は考えられません。
A + B * C
。これは、通常のユーザーにとっては、接尾辞のいずれかのプレフィックスよりも理解しやすいです。