トレース方法を教えてください

午前試験免除制度対応!基本情報技術者試験のeラーニング【独習ゼミ】
受験者さん  
(No.1)
令和5年下期パーフェクトラーニング過去問題集
P99 科目B 問9 解説のトレースがどうしてもできません。。

スタートのorder(1)の処理で、
oder(tree[1] [1]) が、なぜ2となりorder(2)に続くのでしょうか。

order(2)の処理でも、
order(tree[2] [1])が4として、order(4)に続いています。

カッコ内のtree[1] [1]は、配列tree{1,1}を指している?のかとも思いましたが、そのような部分木は無いはずですよね。。。

ご教示お願いいしたしますm(_ _)m
2023.10.11 10:42
まきさん 
(No.2)
これ、再帰と二分木の知識が必要です
2023.10.11 12:10
電タックさん 
FE ブロンズマイスター
(No.3)
https://www.fe-siken.com/kakomon/sample/b9.html
の類似と思いますのでサンプルで記載します。

2次元配列を見る時、なれていない場合カッコを縦に並べると見やすいです。
改行を入れるタイミングは”閉じたカッコ後のカンマ”になります。

>大域: 整数型配列の配列: tree ← {{2, 3}, {4, 5}, {6, 7}, {8, 9}, {10, 11}, {12, 13}, {14}, {}, {}, {}, {}, {}, {}, {}} // {}は要素数0の配列

上を閉じたカッコ後のカンマで改行するとこんな感じになります。
{{2, 3},  // ここが1行目
{4, 5},
{6, 7},   // ここが3行目
{8, 9}, 
{10, 11}, 
{12, 13}, 
{14}, 
{}, 
{}, 
{}, 
{}, 
{}, 
{}, 
{}}

この状態で
tree[行数][指定行の中の配列]
としてアクセスします。

例えば
>tree[1] [1]
は、
tree[1行目][(1行目の中身{2, 3})の1つ目] = 2
と解釈していきます。

仮にtree[3][2]だった場合
tree[3行目][(3行目の中身{6, 7})の2つ目] = 7
となります。

注意点として問題文にある。
「配列の要素番号は1から始まる。」となっている場合は1を1行目や1個目とします。
もしこの記載がない場合は0から始まる為、0を1行目や1個目と見ます。
2023.10.11 12:47
受験者さん  
(No.4)
早々にありがとうございます!!

まさに同じサンプル問題でした。
2次元配列の見方を分かっていなかったことが分かりました。。おっしゃる通り、カッコを縦に並べると見やすいですね。
いただいた記載内容でようやく理解できました。
とても感謝ですm(_ _)m
2023.10.11 14:08

返信投稿用フォーム

スパム防止のためにスレッド作成日から30日経過したスレッドへの投稿はできません。

その他のスレッド


Pagetop