我不了解此代码用于并行二叉树搜索,有人可以详细解释

问题描述 投票:-2回答:1

我正在尝试理解此代码。但是什么也没渗入我的脑海,如果有人可以像我五岁这样解释(就所有细节以及正在发生的事情)以便我能把握住,我将不胜感激

`

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; 
}
c search parallel-processing binary-search-tree multicore
1个回答
0
投票

这仅适用于已构建的树,因此对于任何给定节点,左侧的所有后代的值均小于节点的值,右侧的所有后代的值均大于节点的值。这称为binary search tree

以下是此类树的示例:

                 5
             ___/ \___
            /         \
           3          10
          / \        /  \
         2   4      9    12
        /          /    /
       1          7   11

鉴于上述属性,可以仅通过查看节点的左或右子树来高效地定位节点(或确定其不存在)。

例如,如果您要查找11,您将立即忽略根节点的左子节点,因为11大于5。这使我们成为节点10。同样,我们可以忽略左子节点,因为11大于10。这将使我们得到节点12。我们可以忽略合适的子节点,因为11小于12,从而找到了节点11。


顺便说一句,我不知道您认为这与并行处理有什么关系。这是一个纯粹的顺序过程。

© www.soinside.com 2019 - 2024. All rights reserved.