電気通信大学 情報理工学研究科 情報学専攻 2022年8月実施 選択問題 アルゴリズムとデータ構造
Author
祭音Myyura (co-authored with GPT 5.6 SOL)
Description
二分探索木への通常の挿入関数 insertA、四種類の回転
rot1,…,rot4、および平衡を保つ挿入関数
insertB を考える。
- 配列
C1=(4,6,2,3,5,1,7),C2=(1,7,2,6,3,5,4)
を順に挿入した木と高さを示せ。
- 各木の前順・中順走査の出力を示せ。
- 1,2,3,4 の全順列について、高さ 2 と高さ 3 の木になる順列数を求めよ。
- N 要素からなる二分探索木の最良・最悪の高さのオーダを答えよ。
- 指定された二本の木に単回転・二重回転を施した結果を示せ。
- insertB の四つの空欄を回転関数で埋めよ。
题目描述
本题考查二叉搜索树的插入、树高、先序与中序遍历、插入顺序计数,以及通过单旋转和双旋转维持平衡。
Kai
C1 から得られる木は
4
/ \
2 6
/ \ / \
1 3 5 7
であり、
h(C1)=2.
C2 から得られる木は
であり、
h(C2)=6.
前順走査は根・左・右、中順走査は左・根・右の順である。したがって、
C1C2前順4,2,1,3,6,5,71,7,2,6,3,5,4中順1,2,3,4,5,6,71,2,3,4,5,6,7
全 4!=24 通りを分類すると、
高さ 2: 16 通り,高さ 3: 8 通り.
最良の場合は高さが対数的、最悪の場合は一直線の木となる。よって、
hmin=O(logN),hmax=O(N).
D1=(4,3,2,1) の木に rot1 を施すと、
となる。また、D2=(4,1,3,2) の木に rot2 を施すと、
となる。
右部分木が高い場合、右の子も右寄りなら左単回転、左寄りなら右左二重回転を行う。左部分木が高い場合は対称である。したがって、
(A)(C): rot3(p),: rot1(p),(B)(D): rot4(p),: rot2(p).