总结一下二叉搜索树的建树和中序遍历操作
#include <iostream>
#include <cstdio>
#include <cstdlib>
using namespace std;
struct node
{
int data;
node *lchild,*rchild;
};
node* bstinsert(int x,node *root)
{
node *p=new node();
p->data=x;
p->lchild=p->rchild=NULL;
if (!root) root=p;
else
{
if (root->data>x) root->lchild=bstinsert(x,root->lchild);
else root->rchild=bstinsert(x,root->rchild);
return root;
}
}
void bl(node *root)
{
if (root)
{
if (root->lchild) bl(root->lchild);
printf("%d\n",root->data);
if (root->rchild) bl(root->rchild);
}
}
int main()
{
int n,x;
node *root=NULL;
freopen("data1w.in","r",stdin);
freopen("result.out","w",stdout);
scanf("%d",&n);
for (int i=0;i<n;i++)
{
scanf("%d",&x);
root=bstinsert(x,root);
}
bl(root);
}