アルゴリズムとプログラミング

基本情報技術者試験2分木」の問題

テクノロジ系アルゴリズムとプログラミング計算問題難易度:normal
ノード数が1000個の完全2分木のおよその高さ(根を第1段とする段数)はどれか。
およそ10段
段数はおよそ500
約32段
約100段
正解
およそ10段

完全2分木の高さはおよそlog2 n。2^9=512、2^10=1024なので1000個はほぼ10段に収まる(2^10-1=1023≧1000)。よって約10段で正しい。

?選択肢ごとの解説

ア ○完全2分木の高さはおよそlog2 n。2^9=512、2^10=1024なので1000個はほぼ10段に収まる(2^10-1=1023≧1000)。よって約10段で正しい。
イ ×段数500はノード数を2で割った値で、高さが対数的に増える性質を線形と誤解した典型的な誤りである。
ウ ×約32段は1000の平方根(約31.6)に近い値で、高さをlog2でなく平方根と取り違えた誤りである。
エ ×約100段はノード数の十分の一を高さとした根拠のない値で、対数のスケール感を誤っている。

くわしく

完全2分木は段が1段増えるたびノード数がほぼ倍になるため、高さはノード数の2を底とする対数で増える。n=1000で約10段、n=100万でも約20段にしかならない。この対数的な低さが平衡木の探索効率O(log n)を支えている。

本番での押さえどころ

試験のコツ

2の累乗(2^10≒1000、2^20≒100万)を覚え、ノード数を超える最小の2^kから段数を逆算する。

覚え方

倍々で増えるから1000個でも『たった10段』、と紙を10回折ると千枚超のイメージで覚える。

よくある誤り

高さがノード数に比例(n/2など)すると誤る、またはlog2を平方根や常用対数と混同する誤りがある。

アルゴリズムとプログラミングの他の問題

この問題を、AIの8-ways解説つきで。

基本情報技術者試験の演習を、一問ごとに「なぜ」まで。まずは無料で。

無料ではじめる →

ukamiru 過去問 · 基本情報技術者試験 · fe-a3-0035

【基本情報技術者試験】2分木の問題 — 解答・解説|ukamiru 過去問