私が混乱している簡単な質問があります。二分探索ツリーにキーと値のペアを持つという概念と、ツリーが構築されたときにどのように見えるかを知っています。
私が確信していないのは、そのキーが何であるかがわからない場合、そのような BST で値を検索する方法です。
例えば:
整数 (値として) と一意の整数 (キーとして) でいっぱいの二分探索木があるとします。そして、この BST で特定の整数 (たとえば 200) が発生する回数を数えたいとします。つまり、200 は「キー」ではなく「値」です。したがって、私はキーをまったく知りません。
BST全体ですべての「200」を検索するにはどうすればよいですか? これで単純な BST になり、キーはまったく必要ありませんか? 繰り返しますが、ツリーは値ではなく「キー」を使用して左の子と右の子に配置されます。
BST を初期化する方法のコード サンプルも提供できます。
void insertNode(TreeNode *&p, int key, int value)
{
if (p == NULL) {
p = new TreeNode;
p->key = key;
p->value = value;
p->left = NULL;
p->right = NULL;
return;
}
if (key < p->key)
insertNode(p->left, key, value);
else
insertNode(p->right, key, value);
}
どんな助けでも大歓迎です。