我构建了一个函数,该函数需要将一个节点添加到一个二进制搜索树中,该二进制搜索树是按其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;
}发布于 2011-05-30 20:05:28
乍一看,在我看来,dataTree正在被实例化,但它并没有附加到任何东西上。你应该有一个指向新对象的指针,否则它将在方法的末尾丢失。
大多数人在这种情况下都会传递一个双指针。当您需要修改指针时,只需执行*dataTree = make_node();
这有帮助吗?
https://stackoverflow.com/questions/6176747
复制相似问题