我正在尝试理解此代码。但是什么也没渗入我的脑海,如果有人可以像我五岁这样解释(就所有细节以及正在发生的事情)以便我能把握住,我将不胜感激
`
Partree *treeParSearch(char *key, int len)
{
ParTree *ptr;
int flag;
for( ptr = root; ptr != (void *)0; )
{
flag = memcmp(key, ptr->key, len);
if( flag == 0 ) return ptr;
else if( flag < 0) ptr = ptr->left;
else ptr = ptr->right;
}
return ptr;
}
这仅适用于已构建的树,因此对于任何给定节点,左侧的所有后代的值均小于节点的值,右侧的所有后代的值均大于节点的值。这称为binary search tree。
以下是此类树的示例:
5
___/ \___
/ \
3 10
/ \ / \
2 4 9 12
/ / /
1 7 11
鉴于上述属性,可以仅通过查看节点的左或右子树来高效地定位节点(或确定其不存在)。
例如,如果您要查找11,您将立即忽略根节点的左子节点,因为11大于5。这使我们成为节点10。同样,我们可以忽略左子节点,因为11大于10。这将使我们得到节点12。我们可以忽略合适的子节点,因为11小于12,从而找到了节点11。
顺便说一句,我不知道您认为这与并行处理有什么关系。这是一个纯粹的顺序过程。