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] 术语有人能告诉我什么是 key 是数组吗?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是绘制树时通常在圆圈中找到的值,并且leftright节点的两个子节点。

编辑:那个伪代码也有点偏离。詹姆斯的例子很好。

于 2012-11-01T03:48:07.333 回答