c - 我无法将节点插入二叉搜索树

标签 c insert binary-search-tree

我想写一个BST,但是插入函数不起作用。调试了一下,发现没有插入。

/* 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;
}

最佳答案

将其用作插入函数:

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);
     }
}

main() 中的插入函数调用如下:

insert(&root,13);

关于c - 我无法将节点插入二叉搜索树,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/17638926/

相关文章:

sql - H2。将字符串插入 VARBINARY(255)

sql - 大型 SQL 插入 TVF 与 BULK 插入

php - INSERT 表行到另一个表

c++ - 无法使用 Microsoft Visual Studio 2010 构建我的代码

java - 二叉树打印出全零

c - 完美平衡二叉搜索树

c - 如何提高从 AVL 树中查找范围内项目数的函数的效率?

c - C中的细粒度锁定

C 数组循环错误

c - 为什么以下代码在使用 gcc 和 g++ 编译时会给出不同的结果?