Warning: file_get_contents(/data/phpspider/zhask/data//catemap/6/cplusplus/141.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
C++ 设计了一个基于双键的搜索系统_C++_Algorithm_Search_Tree_Key - Fatal编程技术网

C++ 设计了一个基于双键的搜索系统

C++ 设计了一个基于双键的搜索系统,c++,algorithm,search,tree,key,C++,Algorithm,Search,Tree,Key,在一次采访中,我被要求设计一个系统,支持“插入/删除/搜索”由两个键构建的数据: k1(`float`) & k2(`uint`) 以上所有操作(插入/删除/搜索)都是基于k1完成的。此外,他们要求我实施: boolsearch2(浮点k1_1,浮点k1_2) 如果存在具有以下内容的元素,则返回true: k1_1=100。所以所有的操作都取O(logn) 这是正确的方法吗?将很高兴听到您的设计。听起来您的解决方案不会在O(log n)中运行search2。例如,如果k1_1是最小值,

在一次采访中,我被要求设计一个系统,支持“插入/删除/搜索”由两个键构建的数据:

k1(`float`) & k2(`uint`)
以上所有操作(插入/删除/搜索)都是基于
k1
完成的。此外,他们要求我实施:

boolsearch2(浮点k1_1,浮点k1_2)

如果存在具有以下内容的元素,则返回true:

k1_1=100
。所以所有的操作都取O(logn)


这是正确的方法吗?将很高兴听到您的设计。

听起来您的解决方案不会在
O(log n)
中运行
search2
。例如,如果
k1_1
是最小值,而
k1_2
是最大值,则您的解决方案需要在整个树中搜索
k2>=100
的条目


在我脑海中,我要做的是创建两个独立的树,其中一个包含
k2=100
的条目。搜索将需要搜索两棵树,但仍然是
O(logn)
,因为这只是一个常数因子。然后,只需搜索第二棵树,就可以在
O(logn)
中实现
search2

LCA在树中,每个节点都有指向其父节点的指针是
O(h)
,其中
h
是树的高度。对,但在LCA根目录下的子树中搜索k2>=100的节点是O(n)。