深さの各レベルのノードが左から右に番号付けされている完全な二分木を想像してください。
- ノード 1 には子 2 と 3 があります。
- ノード 2 には子 4 と 5 があります。
- ノード 3 には子 6 と 7 があります。
等
深さ D には、2^D のノードがあり、番号は 2^D ... 2^(D+1)-1 です。
任意の深さの完全なツリーの深さ優先検索トラバーサルは決定論的です。
たとえば、深さ 4 のツリーは常にトラバースされます: 1,2,4,8,9,5,10,11,3,6,12,13,7,14,15。
数値のリストを、任意のツリーの DFS トラバーサルで分類される場所で並べ替える方法を探しています。
特に、2 つの数値を取り、どちらが DFS トラバーサルで最初に来るかを判断できる比較関数が必要です。
何か案は?
ある程度の最大ツリー サイズについて DFS トラバーサルを事前に計算することは、これを行う 1 つの方法ですが、その情報の計算と保存を必要としない数学的ソリューションを好みます。