Search 谁能告诉我插入二叉搜索树的代码有什么问题吗

Search 谁能告诉我插入二叉搜索树的代码有什么问题吗,search,data-structures,binary,Search,Data Structures,Binary,我正在尝试在二元搜索树中插入元素,没有递归(但这段代码只是插入根元素,没有其他元素)。我不知道怎么了,这段代码应该可以工作,但不是,我不擅长递归,互联网上的每一段代码都使用递归在二元搜索树中插入元素。谁能告诉我,什么地方出了问题,我该怎么纠正?? 这是密码 <#include<bits/stdc++.h> using namespace std; struct node { int data; node *left; node *right; }*root=NULL

我正在尝试在二元搜索树中插入元素,没有递归(但这段代码只是插入根元素,没有其他元素)。我不知道怎么了,这段代码应该可以工作,但不是,我不擅长递归,互联网上的每一段代码都使用递归在二元搜索树中插入元素。谁能告诉我,什么地方出了问题,我该怎么纠正?? 这是密码

<#include<bits/stdc++.h>
using namespace std;
struct node
{
  int data;
  node *left;
  node *right;
}*root=NULL;
void insert(int data)
{   node* temp=new node;

  node *ptr=root;
  temp->data=data;
  temp->left=NULL;
  temp->right=NULL;
  if(ptr==NULL)
    {
      root=temp;

    }
  else
    {
      while(ptr!=NULL)
        {
          if(data<=(ptr->data))     
            {ptr=ptr->left;}
          else{
            ptr=ptr->right;
          }
        }//while loop ends here so that i get the ptr to be

      ptr=temp;
    }
}
void disp(node* ptr)
{
  if(ptr==NULL)
    return ;
  disp(ptr->left);
  cout<<ptr->data<<endl;
  disp(ptr->right);
}


int main()
{   
  insert(10);
  insert(11);
  insert(23);
  disp(root);

}
data=data;
temp->left=NULL;
temp->right=NULL;
如果(ptr==NULL)
{
根=温度;
}
其他的
{
while(ptr!=NULL)
{
如果(数据))
{ptr=ptr->left;}
否则{
ptr=ptr->右侧;
}
}//而循环在这里结束,所以我得到了ptr
ptr=温度;
}
}
无效显示(节点*ptr)
{
如果(ptr==NULL)
返回;
显示(ptr->左);

不能您从不在树中写入,只在本地变量ptr中写入。在您的代码中,当您发现空子级时,应该插入temp

void insert(int data)
{
  node* temp=new node;
  node *ptr=root;
  temp->data=data;
  temp->left=NULL;
  temp->right=NULL;
  if(ptr==NULL)
    {
      root=temp;        
    }
  else
    {
      while(1)
        {
          if(data<=(ptr->data)) {
            if(ptr->left) ptr=ptr->left;
            else {ptr->left=temp; break;}
          }
          else{
            if(ptr->right) ptr=ptr->right;
            else {ptr->right=temp; break;}
          }
        }//while loop ends here so that i get the ptr to be         
    }
}
void插入(整数数据)
{
node*temp=新节点;
node*ptr=root;
温度->数据=数据;
temp->left=NULL;
temp->right=NULL;
如果(ptr==NULL)
{
根=温度;
}
其他的
{
而(1)
{
如果(数据)){
如果(ptr->left)ptr=ptr->left;
else{ptr->left=temp;break;}
}
否则{
如果(ptr->right)ptr=ptr->right;
else{ptr->right=temp;break;}
}
}//而循环在这里结束,所以我得到了ptr
}
}

很抱歉,代码是从问题中的include部分开始的,我不熟悉堆栈溢出