次の記述中の に入れる正しい答えを、解答群の中から選べ。ここで、配列の要素番号は1から始まる。 手続orderは、図の2分木の、引数で指定した節を根とする部分木をたどりながら、全ての節番号を出力する。大域の配列treeが図の2分木を表している。配列treeの要素は、対応する節の子の節番号を、左の子、右の子の順に格納した配列である。例えば、配列treeの要素番号1の要素は、節番号1の子の節番号から成る配列であり、左の子の節番号2、右の子の節番号3を配列{2, 3}として格納する。 手続orderをorder(1)として呼び出すと、 の順に出力される。 〔プログラム〕 大域: 整数型配列の配列: tree ← {{2, 3}, {4, 5}, {6, 7}, {8, 9}, {10, 11}, {12, 13}, {14}, {}, {}, {}, {}, {}, {}, {}} // {}は要素数0の配列 ○order(整数型: n) if (tree[n]の要素数 が 2 と等しい) order(tree[n][1]) nを出力 order(tree[n][2]) elseif (tree[n]の要素数 が 1 と等しい) order(tree[n][1]) nを出力 else nを出力 endif

左→自分→右の順に出力するのは中間順走査

頻出基本情報技術者試験2022年度 公開問題 科目B9/アルゴリズムとプログラミング / データ構造

2分木。根が節番号1。1の左の子が2、右の子が3。2の左の子が4、右の子が5。3の左の子が6、右の子が7。4の左の子が8、右の子が9。5の左の子が10、右の子が11。6の左の子が12、右の子が13。7の左の子が14(子は一つで左の子とする)。8,9,10,11,12,13,14は葉(子なし)。
2分木。根が節番号1。1の左の子が2、右の子が3。2の左の子が4、右の子が5。3の左の子が6、右の子が7。4の左の子が8、右の子が9。5の左の子が10、右の子が11。6の左の子が12、右の子が13。7の左の子が14(子は一つで左の子とする)。8,9,10,11,12,13,14は葉(子なし)。
大域: 整数型配列の配列: tree ← {{2, 3}, {4, 5}, {6, 7}, {8, 9}, {10, 11}, {12, 13}, {14}, {}, {}, {}, {}, {}, {}, {}} // {}は要素数0の配列 ○order(整数型: n) if (tree[n]の要素数 が 2 と等しい) order(tree[n][1]) nを出力 order(tree[n][2]) elseif (tree[n]の要素数 が 1 と等しい) order(tree[n][1]) nを出力 else nを出力 endif

選択肢

正解と解説

正解: 8, 4, 9, 2, 10, 5, 11, 1, 12, 6, 13, 3, 14, 7

この手続は、左の子をたどってから自分の節番号を出力し、その後で右の子をたどる順序、すなわち中間順(in-order)走査です。最も左下の葉である8から出発し、8、4、9、2……と進み、根の1はちょうど中間に現れます。節7は子が左の14だけなので、14を出力してから7を出力します。

選択肢ごとの解説

出典:令和4年度 公開問題 基本情報技術者試験 科目B 問9(IPA)

同じ分野の他の問題

最終更新:2026-08-25/解説・選択肢ごとの解説は資格暗記が独自に作成しています。問題文と選択肢の出典は上記のとおりです。