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 正在获取根值,然后将其用作索引?我无法理解这一点。请解释。
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 正在获取根值,然后将其用作索引?我无法理解这一点。请解释。
它是伪代码(不是真正的语言)。
在这种情况下<-
,意味着“被分配”并且可以被认为是在做=
现代语言中所做的事情。是结构/对象属性的key[x]
简写(这并不意味着它一定是类的成员,它可以从地图等数据结构中检索。实际实现由算法实现者决定。key
x
x
所以上面的算法可以用 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;
}
这看起来像伪代码。将视为Java<-
中的赋值运算符。=
您有时还会看到:=
其他伪代码变体中的情况。
x
用作指向树中节点的指针。key
是绘制树时通常在圆圈中找到的值,并且left
是right
节点的两个子节点。
编辑:那个伪代码也有点偏离。詹姆斯的例子很好。