平成20年度 技術士第一次試験問題【専門科目】
【16】情報工学部門
W−2
次のC言語のプログラムでは、2分探索木を用いて探索を行う。(ア)、(イ)に
入る正しい組合せを@〜Dの中から選べ。ただし、各ノードの left が指す
部分木に格納されている key の値はそのノードの key の値より小さいもの
とする。

struct node {
  int key;
  struct node *left, * right;
} tree ;

struct node *search (struct node *tree, int key) {
  if (tree == NULL) return NULL;
  if (key == tree->key) return tree;
  if (key < tree -> key)
    return     (ア)     ;
  else
    return     (イ)     ;
}
                       
@ search(tree->left)       NULL
A search(tree, key)       search (tree->left, key)
B search(tree->left, key)    search (tree, key)
C search(tree->right, key)   search (tree->left, key)
D search(tree->left, key)    search (tree->right, key)



【正解】 D

(ア) は key と 2分木のノードの値を比較して
 key の方が小さい場合に実行されるため、
 題意より left が指す部分木を再帰的に検索する。
 従って、search(tree->left, key) が入る。

(イ) は、key と 2分木のノードの値を比較して
 key の方が大きい場合に実行されるため、
 題意より right が指す部分木を再帰的に検索する。
 従って、search (tree->right, key) が入る。


EXCELのマクロのご相談なら ファーストマクロ 



W−1 目次 W−3
ファーストマクロ TOPページ