跳到主要内容

電気通信大学 情報理工学研究科 情報学専攻 2022年8月実施 選択問題 アルゴリズムとデータ構造

Author

祭音Myyura (co-authored with GPT 5.6 SOL)

Description

二分探索木への通常の挿入関数 insertA\mathrm{insertA}、四種類の回転 rot1,,rot4\mathrm{rot1},\ldots,\mathrm{rot4}、および平衡を保つ挿入関数 insertB\mathrm{insertB} を考える。

  1. 配列
    C1=(4,6,2,3,5,1,7),C2=(1,7,2,6,3,5,4)C_1=(4,6,2,3,5,1,7),\qquad C_2=(1,7,2,6,3,5,4)
    を順に挿入した木と高さを示せ。
  2. 各木の前順・中順走査の出力を示せ。
  3. 1,2,3,41,2,3,4 の全順列について、高さ 22 と高さ 33 の木になる順列数を求めよ。
  4. NN 要素からなる二分探索木の最良・最悪の高さのオーダを答えよ。
  5. 指定された二本の木に単回転・二重回転を施した結果を示せ。
  6. insertB\mathrm{insertB} の四つの空欄を回転関数で埋めよ。

题目描述

本题考查二叉搜索树的插入、树高、先序与中序遍历、插入顺序计数,以及通过单旋转和双旋转维持平衡。

Kai

1.

C1C_1 から得られる木は

        4
/ \
2 6
/ \ / \
1 3 5 7

であり、

h(C1)=2.\boxed{h(C_1)=2}.

C2C_2 から得られる木は

1
\
7
/
2
\
6
/
3
\
5
/
4

であり、

h(C2)=6.\boxed{h(C_2)=6}.

2.

前順走査は根・左・右、中順走査は左・根・右の順である。したがって、

前順中順C14,2,1,3,6,5,71,2,3,4,5,6,7C21,7,2,6,3,5,41,2,3,4,5,6,7\begin{array}{c|l|l} &\text{前順}&\text{中順}\\ \hline C_1&4,2,1,3,6,5,7&1,2,3,4,5,6,7\\ C_2&1,7,2,6,3,5,4&1,2,3,4,5,6,7 \end{array}

3.

4!=244!=24 通りを分類すると、

高さ 2: 16 通り,高さ 3: 8 通り.\boxed{\text{高さ }2:\ 16\text{ 通り}},\qquad \boxed{\text{高さ }3:\ 8\text{ 通り}}.

4.

最良の場合は高さが対数的、最悪の場合は一直線の木となる。よって、

hmin=O(logN),hmax=O(N).\boxed{h_{\min}=O(\log N)},\qquad \boxed{h_{\max}=O(N)}.

5.

D1=(4,3,2,1)D_1=(4,3,2,1) の木に rot1\mathrm{rot1} を施すと、

    3
/ \
2 4
/
1

となる。また、D2=(4,1,3,2)D_2=(4,1,3,2) の木に rot2\mathrm{rot2} を施すと、

    3
/ \
1 4
\
2

となる。

6.

右部分木が高い場合、右の子も右寄りなら左単回転、左寄りなら右左二重回転を行う。左部分木が高い場合は対称である。したがって、

(A): rot3(p),(B): rot4(p),(C): rot1(p),(D): rot2(p).\boxed{ \begin{aligned} \text{(A)}&:\ \mathrm{rot3}(p),& \text{(B)}&:\ \mathrm{rot4}(p),\\ \text{(C)}&:\ \mathrm{rot1}(p),& \text{(D)}&:\ \mathrm{rot2}(p). \end{aligned}}