電気通信大学 情報理工学研究科 情報・ネットワーク工学専攻 2024年8月実施 選択問題 アルゴリズムとデータ構造
标签:
Author
祭音Myyura (co-authored with GPT 5.6 SOL)
Description
二分木の再帰的な深さ優先走査について、中順走査の出力位置を答え、スタックを用いる非再帰版を書け。また、 を順に挿入した二分探索木を描き、最悪時の計算量を説明せよ。
最後に、キー の探索頻度がそれぞれ のとき、探索コストが最小となる二分探索木を求めよ。
题目描述
回答二叉树中序遍历的输出位置,写出基于栈的非递归中序遍历;构造指定插入序列的二叉搜索树并说明最坏复杂度;再按给定查找频率求最优二叉搜索树。
Kai
(1)
中順走査では左部分木を走査した直後に根を出力する。したがって、
である。
(2)
InOrder(root)
S <- empty stack
p <- root
while p != NULL or S is not empty
while p != NULL
push(p, S)
p <- left[p]
p <- pop(S)
output key[p]
p <- right[p]
(3)
挿入後の二分探索木 は次のとおりである。
(4)
昇順または降順に近い順序で挿入すると、木が片側だけに伸び、高さが となり得る。このとき探索・挿入・削除には根から最大 個の頂点を調べる必要がある。したがって、
となり、平衡な場合の より悪化する。
(5)
区間 の最小コストを 、頻度を とすると、
この漸化式を計算すると最小値は で、根は となる。
実際、探索コストは