#include<iostream>
#include<cstring>
#include<algorithm>
#include<math.h>
using namespace std;
struct node
{
node *l;
node *r;
int value;
};//指针的访问需要指针
void build(node * &root,int &k)
{
if(root==NULL)
{
root=new node;
root->value=k;
root->l=NULL;
root->r=NULL;
}
else {
if(k<root->value)
build(root->l,k);
else
build(root->r,k);
}
}//建树,空则加值否则判断下移
void pre(node *root,int f)
{
if(root!=NULL)
{
if(f==0)
printf("%d",root->value);
else {
printf(" %d",root->value);
}
pre(root->l,1);
pre(root->r,1);
}
}//前序遍历,有根输出根,再移向左子树到右子树(递归)
void remove(node * &root)
{
if(root!=NULL)
{
remove(root->l);
remove(root->r);
delete(root);
}
}//清除
int main()
{
int n;
while(~scanf("%d",&n))
{
node *root=NULL;//初始化为空,空后空间需要新建
for(int i=1;i<=n;++i)
{
int k;
scanf("%d",&k);
build(root,k);
}
pre(root,0);
printf("\n");
remove(root);
}
return 0;
}
第一棵树(
最新推荐文章于 2023-09-22 19:13:54 发布