This commit is contained in:
krahets
2026-08-18 03:09:26 +08:00
parent 0375f25b66
commit fde23f369e
158 changed files with 312 additions and 282 deletions
@@ -4715,12 +4715,12 @@
<p>定義に従うと、<code>preorder</code><code>inorder</code> はいずれも 3 つの部分に分けられます。</p>
<ul>
<li>前順走査:<code>[ 根ノード | 左部分木 | 右部分木 ]</code> ,例えば上図の木は <code>[ 3 | 9 | 2 1 7 ]</code> に対応します。</li>
<li>中順走査:<code>[ 左部分木 | 根ノード 右部分木 ]</code> ,例えば上図の木は <code>[ 9 | 3 | 1 2 7 ]</code> に対応します。</li>
<li>中順走査:<code>[ 左部分木 | 根ノード | 右部分木 ]</code> ,例えば上図の木は <code>[ 9 | 3 | 1 2 7 ]</code> に対応します。</li>
</ul>
<p>上図のデータを例にすると、下図の手順によって分割結果を得られます。</p>
<ol>
<li>前順走査の先頭要素 3 が根ノードの値です。</li>
<li>根ノード 3 の <code>inorder</code> におけるインデックスを探すと、そのインデックスを用いて <code>inorder</code><code>[ 9 | 3 1 2 7 ]</code> に分割できます。</li>
<li>根ノード 3 の <code>inorder</code> におけるインデックスを探すと、そのインデックスを用いて <code>inorder</code><code>[ 9 | 3 | 1 2 7 ]</code> に分割できます。</li>
<li><code>inorder</code> の分割結果から、左部分木と右部分木のノード数はそれぞれ 1 と 3 であることがわかり、したがって <code>preorder</code><code>[ 3 | 9 | 2 1 7 ]</code> に分割できます。</li>
</ol>
<p><img alt="前順走査と中順走査で部分木を分割する" class="animation-figure" src="../build_binary_tree_problem.assets/build_tree_preorder_inorder_division.png" /></p>