问题描述
|
我构建了一个函数,该函数需要将一个节点添加到按其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,numVote);
return dataTree;
}
解决方法
乍一看,在我看来好像dataTree已实例化,但它没有附加任何内容。您应该有一个指向新对象的指针,否则它将在方法结束时丢失。
大多数人在这种情况下要做的就是传递双指针。当您需要修改指针时,只需执行
*dataTree = make_node();
有帮助吗?