0
Search(T,k)
x<- root[T]
while x != NULL and k != key[x] 
do 
  if k<key[x]
    then x <- left[x]
  else x <- right[x]
    return x

アルゴリズムを始めたばかりですが、「<-」とkey [x]の用語がよく見られますが、キーとは配列であるかどうかを誰かに教えてもらえますか?xはルート値を取得していて、それがインデックスとして使用されていますか?私はこれを理解できません。説明してください。

4

2 に答える 2

4

これは擬似コードです(実際の言語ではありません)。

この場合、「割り当てられている」という意味であり、現代語で<-行うことと考えることができます。は構造体/オブジェクトのプロパティの省略形です(これは必ずしもクラスのメンバーであるという意味ではありません。マップなどのデータ構造体から取得できます。実際の実装はアルゴリズムの実装者に任されています。=key[x]keyxx

したがって、上記のアルゴリズムはCで次のように記述できます。

Node* Search(Tree* T, Key k)
{
    Node* x = T->Root();
    while ((x != NULL) && (k != x->Key())
    {
        if (k < x->Key())
            x = x->Left();
        else
            x = x->Right();
    }

    return x;
}
于 2012-11-01T03:45:52.167 に答える
0

これは疑似コードのように見えます。をJava<-の代入演算子と考えてください。また、他の疑似コードのバリエーション=と同じように表示されることもあります。:=

xツリー内のノードへのポインタとして使用されます。これkeyは、ツリーが引き出されたときに通常円で見つかる値でleftありright、ノードの2つの子です。

編集:その疑似コードも少しずれています。ジェームズの例は良いです。

于 2012-11-01T03:48:07.333 に答える