我构建了一个函数,需要将一个节点添加到按其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;
}
答案 0 :(得分:1)
乍一看,它看起来像dataTree正在实例化,但它没有附加到任何东西。你应该有一个指向新对象的指针,否则它将在方法结束时丢失。
大多数人在这种情况下做的是通过双指针。当您需要修改指针时,只需执行*dataTree = make_node();
这有帮助吗?