二 叉搜索树的插入(递归、迭代)

本文详细介绍了如何使用C语言创建二叉搜索树节点,并提供了递归与迭代两种插入节点的方法。首先定义了节点类型,然后展示了创建节点的具体实现。接着,通过递归和迭代的方式实现了二叉搜索树的插入操作,确保树的特性得到维持。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

创建节点

typedef char NodeType;

typedef struct SearchNode

{

    NodeType    data;

    SearchNode *  lchild;

    SearchNode *  lchild;

}SearchNode;

SearchNode *CreateSearchNode(NodeType value)

 {

    SearchNode* node = (SearchNode*)malloc(sizeof(SearchNode)) ;

    assert(node  != NULL);

    node->data = value;

    node->lchild = NULL;

    node->rchild = NULL;

    return node;

 }

二叉搜索树插入(递归)

void SearchTreeInsert(SearchNode** proot, NodeType value)

{

      if (proot == NULL)

     {

       return;

     }

     

//1.找到根节点或者子节点,插入节点

    if(*proot == NULL)

    {

       SearchNode * node = CreateSearchNode(value);

       *proot = node;

    }

    SearchNode * tmp = *proot;

   if(tmp ->data >value)

   {

       SearchTreeInsert(&(tmp->lchild),value);

  }

   

 if(tmp ->data <value)

   {

       SearchTreeInsert(&(tmp->rchild),value);

  }

//2.==时不处理

  else

  return;

二叉搜索树插入(迭代)

void SearchTreeInsert(SearchNode** proot, NodeType value)

{

      if (proot == NULL)

     {

       return;

     }

     SearchNode** link = proot;

     SearchNode * current; 

    while((current= *link ) != NULL) 

    {

      if(value  < current->data)

         link = &(current->lchild);

      else

      {

        assert(value != current->data );

        link = &(current->rchild);

      }

    }

  current = CreateSearchNode(value);

  *link = current;

}

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值