我需要在两个BST中找到最低的公共节点。我在寻找方法上遇到了麻烦。 我应该使用递归,而不是将值存储在数组中。
我尝试实施顺序搜索。但是它不工作,因为它什么也不返回。
这是我的插入函数:
tree *insert(tree* node, int data){
if (node == NULL) {
node = malloc(sizeof(node));
node->data = data;
node->left = node->right = NULL;
}
else if (data < node->data)
node->left = insert(node->left, data);
else if (data > node->data)
node->right = insert(node->right, data);
return node;
}
我的搜索功能。
tree *search (tree* node, int data){
if (node == NULL || node->data == data){
return node;
}
if (data > node->data){
return search(node->right, data);
}
return search(node->left, data);
}
和我的lower_common函数:
int lowest_common (tree *t1, tree *t2){
if(t1 == NULL || t2 == NULL){
return -1;
}
if(t1->data == t2->data){
return 1;
}
else if (t1->data != t2->data){
lowest_common(t1->left, t2);
search(t2, t1->data);
lowest_common(t1->right, t2);
}
printf("test");
return 1;
}
在两棵树中插入输入后,我将调用lowest_common(t1,t2)
如果没有公共节点,则应返回-1,如果有公共最低节点,则应返回1。但是它什么也没返回。有什么想法吗?