我需要使用二叉搜索树对矢量进行优化搜索。
例如,我有vector<int>
个数字,我存储{5,4,3,2,1}
然后我将那些1,2,3,4,5复制到二叉树,并需要返回它存储在vector中的索引。
例如,search(4)必须返回1,因为数字[1] = 4
我尝试过给节点索引,但最后它们并不匹配
是否有更好的解决方案或如何正确地为树节点提供索引
struct node {
int data;
int index;
node* left;
node* right;
};
node* insert(int x, node* t) {
if(t == NULL) {
t = new node;
t->data = x;
t->index = 0;
t->left = t->right = NULL;
}
else if(x < t->data) {
t->left = insert(x, t->left);
t->index += 1;
}
else if(x > t->data) {
t->right = insert(x, t->right);
t->index += 0;
}
return t;
}
node* find(node* t, int x) {
if(t == NULL)
return NULL;
else if(x < t->data) {
return find(t->left, x);
}
else if(x > t->data) {
return find(t->right, x);
}
else
return t;
}
int main() {
BST t;
vector<int> storage;
for ( int i =0; i< 10; i++) {
storage.push_back(rand()%100 +1);
t.insert(storage[i]);
}
t.display();
t.search(15);
}
答案 0 :(得分:0)
node* insert(int x, node* t, int index)
{
if(t == NULL)
{
t = new node;
t->data = x;
t->index = index;
t->left = t->right = NULL;
}
else if(x < t->data)
{
t->left = insert(x, t->left, index);
}
else if(x > t->data)
{
t->right = insert(x, t->right, index);
}
return t;
}