目次
1. 空白を埋めることを選択します
質問1
1. 高さ h の二分木上に次数 0 と次数 2 のノードのみがあると仮定すると、二分木に含まれるノードの数は少なくとも () 個、最大で () 個になります。
A, h; 2 h -1
B, 2h-1; 2 h -1
C, 2h+1; 2 h-1 -1
D, h+1; 2 h -1
分析:(B)
少なくとも、1 つのノードを持つルート ノードを除いて、他の h-1 層には 2 つのノードがあるため、2(h-1)、つまり 2(h-1)+1= 2h- 1.
ほとんどの場合、次数 0 の最後の層を除いて、他のノードは次数 2 のノード、つまり 2 h -1 ノードです。
質問2
2. 124 個のリーフ ノードを持つ完全なバイナリ ツリーには、最大 ( ) 個のノードがあります。
A、247
B、248
C、249
D、250
分析: (B)
n 0 =n 2 +1 および N=n 0 +n 1 +n 2であるため、次数 0 と次数 1 のノードの差は 1 であるため、完全なノードには次数 1 のノードはn 1個だけ存在します。二分木0 または 1 のいずれかになります。つまり、要約点の数が偶数の場合はn 1 =1、奇数の場合はn 0 =0 になります。
この質問では、最大ノード数、つまり n 1 =1 を考慮しているため、n 0 =124、n 2 =123が得られます。したがって、 N=124+123+1=248 となります。
質問3
3. 二分木に 126 個のノードがある場合、第 7 層には最大で () 個のノードが存在します (ルート ノードは第 1 層にあります)。
A、32
B、64
C、63
D、レイヤー 7 はありません
分析:(C)
第 1 層から第 6 層までのノードが満杯である状況、つまり第 1 層から第 6 層までのノード数が 1+2+4+8+16+32=63 である状況を考えます。第 7 層には最大 64 個のノードを含めることができ、二分木には 126 個のノードがあるため、第 7 層には 126-63=63 個のノードが存在します。
質問4
4. n 個のノードを持つバイナリ ツリーは、2 次リンク リストを使用してノードを格納します。ここで、非 null ポインタの数は () で、null ポインタの数は () です。
A, n+1; n-1
B, n; n-1
C, n-1; n+1
D, 2n; 2n-1
分析: (A)
n 個のノードには n-1 個の分岐があり、各分岐はポインターに対応するため、非 null ポインターの数は n-1 になります。さらに、各ノードには 2 つのポインター フィールド (左ポインター フィールド lchild 、右ポインタ ドメイン rchild)、ポインタ ドメインの合計数から null 以外のポインタの数を引いたものが null ポインタの数、2n-(n-1)=n+1 になります。
質問5
5. 二分木の preorder シーケンス、inorder シーケンス、postorder シーケンスでは、すべての葉ノードの順序は () になります。
A. 同じではない
B. まったく同じ
C. プレシーケンスとミッドシーケンスは同じですが、ポストシーケンスとは異なります
D. ミッドシーケンスとポストシーケンスは同じですが、異なりますプリシーケンス
分析: (B)
3 つの走査方法では、左右のサブツリーを訪問する順序は同じですが、ルート ノードを訪問する順序が異なるため、すべてのリーフ ノードの順序は同じになります。
質問6
6. 手がかり二分木は () 構造です。
A、論理
B、論理およびストレージ
C、物理
D、リニア
分析:(C)
バイナリ ツリーは論理構造ですが、スレッド バイナリ ツリーは手がかりのあるリンク リスト構造であり、物理構造です。
質問7
7. n 個のリーフ ノードを持つハフマン ツリーでは、非リーフ ノードの総数は () です。ハフマン ツリーに 215 個のノードがある場合、ハフマン エンコードを実行すると、異なるコードワードを取得できます ()。
A、n-1; 108
B、n; 107
C、2n-1; 214
D、2n; 215
分析:(A)
ハフマン木には次数 0 と 2 のノードしかなく、n 0 =n 2 +1 より、葉以外のノードの総数は n-1 であることがわかります。
ノードの総数 N=n 0 +n 2、および n 0 =n 2 +1、N=215 は、n 0 =108と置き換えることができます。
質問8
8. 次の条件でバイナリ ツリーを検索します。
A. 前次の走査シーケンスは後次の走査シーケンスと同じ ()
B. 中次の走査シーケンスは後次の走査シーケンスと同じです。トラバーサル シーケンスは、()
C です。前順序のトラバーサル シーケンスは、中間の順序と同じです。トラバーサル シーケンスは、()
D と同じです。順序内のトラバーサル シーケンスは、階層トラバーサル シーケンスと同じです。それは ()
分析:
A. ルート ノードのみを持つ空のツリーまたはバイナリ ツリー;
B. 空のツリーまたは任意のノードには最大でも左のサブツリーがあります;
C. 空のツリーまたは任意のノードには最大でも右のサブツリーがあります;
D. 空のツリーまたは任意のノード ノードにはせいぜい右側のサブツリーのみです。
質問9
9. (判定) ハフマン符号化木では、同じ頻度を持つ 2 つの文字が同じハフマン コードを持ちます。
分析:(×)
文字が同じでない限り、同じハフマン コードは存在しないため、結果のハフマン コードも同じになります。
2. 応募に関する質問
質問 10 (シーケンスの走査)
質問の種類:通过已知树的遍历序列,求其他遍历序列
10. 二分木の順走査シーケンスは ABCDEFG、事後走査シーケンスは BDCAFGE であり、その前位走査シーケンスを求めます。
解決策: 最初、中間、後次のトラバーサル シーケンスと、バイナリ ツリーの階層トラバーサル シーケンスのトラバース順序は次のとおりであることがわかります。
名前を反復処理する | トラバースルール |
---|---|
プレオーダートラバーサルシーケンス | ルート > 左 > 右 |
順序走査シーケンス | 左 > ルート > 右 |
事後走査シーケンス | 左 > 右 > ルート |
階層横断シーケンス | 左 > 右 |
まず、指定された 2 つのシーケンスを通じてバイナリ ツリーを復元します。ポストオーダー トラバーサル シーケンスは BDCAFGE であるため、シーケンスの最後の要素 "E" はバイナリ ツリーのルート ノードであるため、取得できます。左サブツリーと右
サブツリー インオーダートラバーサルとポストオーダートラバーサルは分割されています。まず E の左サブツリーを見てください。事後シーケンスから、A が左サブツリーのルート ノードであることがわかります。事後シーケンスでは、A には左部分木がなく、右部分木は BCD であることがわかります。同様に、E の右部分木では、G は右部分木のルート ノードですが、F が BCD であるかどうかを判断することはできません。左のサブツリーまたは右のサブツリーであるため、中位の走査シーケンスでは、G の左側は F です。次のように、順序走査ルールによれば、F は G の左のサブツリーであり、G には右のサブツリーがありません。 : 上記と同様に、
C がルート ノード A の右側のサブツリー、C の左側のサブツリーが B、右側のサブツリーが D であることがわかります。以下は完全な二分木です。したがって、その事前順序走査シーケンスは次のようになります
。取得: EACBDGF。
質問11(保管構造)
質問の種類:根据树的存储结构,画出二叉树
11. 以下の図は二分木の逐次記憶構造です。空白はノードが存在しないことを示します。二分木を描き、二分木の順列と後順を求めます。
解決策: 完全なバイナリ ツリーとして保存され、次のように空白が空になります:
注: 黒のマークはバイナリ ツリーをより明確に示すためだけに使用されており、バイナリ ツリーの青い部分のみを残すことをお勧めします。
インオーダー シーケンス: BADCFE、ポストオーダー シーケンス: BDFECA。
質問 12 13 (二分木/ツリーとフォレスト間の変換)
質問の種類 1 :根据所给二叉树,将其转换为树
12. 次のバイナリ ツリーをツリーに変換します。
解決策: 最初のステップは回転です。次のように、ルート ノードの左右のサブツリーを除くバイナリ ツリー内のすべてのノードを右に 45 度回転します。 2 番目のステップは、
線を接続することです。ノードの左側の子に右側のサブツリーがある場合、右側のサブツリーはノードに接続され、ノード A の左側の子 B には右側のサブツリー D があるため、A は D に接続され、ノード C の左側の子 E は次のようになります。右側のサブツリーは H なので、次のように C を H に接続します。
3 番目のステップは切断です。次のように、各ノードの右サブツリーの右枝と、ルート ノードを除く親ノードとの間の接続を削除します。 二分
木から変換された木を取得できます。
質問タイプ 2 :根据所给森林,将其转换为二叉树
13. 3 つのツリーで構成される次のフォレストがあるとすると、それをバイナリ ツリーに変換します。
解決策: 最初のステップは接続です。次のように、最初にすべてのノードの兄弟ノードを接続し、各ツリーのルート ノードも接続します。
2 番目のステップは切断です。すべてのノードの左端の子のみが保持され、他のノードは次のように切断されます。
切断後:
3 番目のステップは回転です。最初のツリーのルート ノードを軸として、次のように時計回りに 45 度回転します。
質問 14 (スレッド化されたバイナリ ツリー)
質問の種類:根据所给二叉树,画出该二叉树的线索二叉树
14. 二分木の事前順序および順序内トラバーサル シーケンスをそれぞれ ABDFCEGH および BFDAGEHC とし、この二分木の事後手がかりツリーを見つけます。
解決策: まず、バイナリ ツリーを見つけます。次のことが得られます。
最初のステップでは、描画される対応する手がかりバイナリ ツリーの最初/中位のトラバーサル シーケンスを見つけます。ポストオーダートラバーサルシーケンスはFDBGHECAであることがわかります。
2 番目のステップは、(バイナリ ツリー内の左右の子が欠落しているノードの) 手がかりを描画することです。ノードに左の子がない場合、手がかりは、対応する手がかりバイナリ ツリーの最初/中間/後次トラバーサル シーケンスの先行ノードを指し、先行ノードがない場合は NULL を指します。ノードに右がない場合は、NULL を指します。子、手がかりは、対応する手がかりバイナリ ツリーの最初/中間/後順トラバーサル シーケンスを指します。 内/後順トラバーサル シーケンスの後続者。後続者がない場合は NULL。
たとえば、ノード D には右の子がなく、後続トラバーサル シーケンスにおけるノード D の後続ノードは B であるため、B を指します。ノード F には左の子がなく、ノード F には後続トラバーサル シーケンスにおける先行ノードがありません。順序トラバーサル シーケンスなので、NULL を指します。ノード H には左の子と右の子がありません。ポストオーダー トラバーサル シーケンスでは、ノード H の前任者は G で、後者は E なので、それぞれ G と E を指します。以下に続きます:
質問 15 16 (ハフマン木)
質問の種類 1 :已知字符的频数,设计哈夫曼编码,并画出相应的哈夫曼树
15. メッセージに出現する文字は a、b、e、l、m、n、o、u、y、g で、メッセージに出現する頻度はそれぞれ 43、15、11、7、9、6 です。 、45、25、5、3。
(1) 各文字のハフマン符号化を設計する;
(2) ハフマン ツリーを描画する。
解決策:
質問タイプ 2 :已知字符的概率,设计哈夫曼编码,并画出相应的哈夫曼树
通信システムに5種類の文字A、B、C、D、Eしか出現できない場合、その確率はそれぞれ0.12、0.15、0.19、0.21、0.33である。
(1) ハフマンツリーを描画する;
(2) ハフマンコードを設計する。
解決策: (1) 周波数を 100 倍に拡大し、それぞれ 12、15、19、21、33 に対応します。まず、ルート ノードの重みが最も小さい 2 つのツリーを左右のサブツリーとして選択し、その
ルート ノードの重みが新しい二分木 値はその重みの合計であり、新しいノードがそれに追加されます。
次の図に示すように、12+15=27、27 を加算します。
マージを続ける:
27 と 33 がマージされ、27+33=60:
40+60=100、100 がマージされます。
(2) ハフマン符号化を実行し、ルートから ノードからリーフ ノードまで、次のように、左の枝は 0、右の枝は 1 に
なります。
あ | B | C | D | E |
---|---|---|---|---|
100 | 101 | 00 | 01 | 11 |