Я хочу написать BST
, но функция вставки не работает. Отладив его, я обнаружил, что он не вставляет.Я не могу вставить узел в дерево поиска bin
/* Binary Search Tree (BST).demo */
#include <stdio.h>
#include <stdlib.h>
typedef struct treeNode{
int data;
struct treeNode* lChild;
struct treeNode* rChild;
} treeNode;
treeNode* createNode(){
treeNode *nNode;
nNode=(struct treeNode*)malloc(sizeof(treeNode));
nNode->data=0;
nNode->lChild=NULL;
nNode->rChild=NULL;
return nNode;
}
void insert(treeNode* rt,int idata)
{
if(rt==NULL){
treeNode* nNode;
nNode=createNode();
nNode->data=idata;
rt=nNode;
rt->lChild=NULL;
rt->rChild=NULL;
}else{
if(idata < rt->data)
insert(rt->lChild,idata);
else insert(rt->rChild,idata);
}
}
int main()
{
treeNode *root;
root=(treeNode*)malloc(sizeof(treeNode));
root->data=15;
root->lChild=NULL;
root->rChild=NULL;
insert(root,13);
if(root->lChild==NULL)
printf("root no l child\n");
// printf("root lchild data :%d",root->lChild->data);
return 0;
}
использовать ссылку на «корень», когда вы передаете его в качестве аргумента для вставки функция. –
, но корень сам по себе является указателем, нужна ли ссылка? –
, если вы не используете ссылку на «root», вы должны передать его «значение» функции вставки. В этом случае, если вы создаете новый узел и назначаете его «root» (как вы здесь делаете), это изменение не будет отображаться вне функции вставки, что приведет к ошибочному поведению. –