二叉搜索树 - 添加节点

时间:2011-05-30 10:10:34

标签: binary-tree

我构建了一个函数,需要将一个节点添加到按其ID(moviecode = id)排序的二叉搜索树中,但它不能正常工作。你能帮我弄清楚代码有什么问题吗?

Node *buildtree(Node *dataTree, char *name, int id, float rating, int numvote) {

    if ((dataTree == NULL)) {

        dataTree= make_node();
        strcpy(dataTree->data.movieName,name);
        dataTree->data.meanRaiting = rating;
        dataTree->data.numOfVoters = numvote;
        dataTree->data.movieCode = id;
        return;

    }

    else if (dataTree->data.movieCode > id) 
        (buildtree (dataTree->left, name, id, rating, numvote));    

    else 
        buildtree (dataTree->right, name, id, rating, numvote);     

    return dataTree;
}

1 个答案:

答案 0 :(得分:1)

乍一看,它看起来像dataTree正在实例化,但它没有附加到任何东西。你应该有一个指向新对象的指针,否则它将在方法结束时丢失。

大多数人在这种情况下做的是通过双指针。当您需要修改指针时,只需执行*dataTree = make_node();

这有帮助吗?