【发布时间】:2018-06-05 12:30:49
【问题描述】:
我已经有一个具有 5 个级别的二叉搜索树,我正在尝试创建一个插入新节点的函数,但我无法正常工作。如何编辑我的代码以进行插入?
TREE *insertion(TREE *root, int num){
TREE *node, *new_node;
node = root;
new_node=(TREE *)malloc(sizeof(TREE));
new_node->rec = num;
new_node->lp = NULL;
new_node->rp = NULL;
while(node != NULL ){
// if(node->rec == num){
// printf("This value exists\n");
// return NULL;
// }
if(num > node->rec){
node = node->rp;
}
else
node = node->lp;
}
if(num>node->rec)
node = new_node;
else
node = new_node;
return root;}
【问题讨论】:
-
函数返回做什么? 应该返回什么?
-
什么都没有,只是在正确的地方插入新节点。
-
然而你已经声明函数应该返回一个
TREE*?如果你声明一个函数返回一些东西,它必须返回一些东西,否则你会得到undefined behavior. -
另外,
node在循环之后会指向哪里? -
第一个返回 NULL 并不重要。我编辑了我的代码以返回树的根,但没有任何效果。问题是节点没有被插入。
标签: c binary-search-tree nodes