如何找到两个BST之间的最低公共节点?

时间:2019-04-05 19:20:20

标签: c binary-search-tree

我需要在两个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。但是它什么也没返回。有什么想法吗?

0 个答案:

没有答案