#include<bits/stdc++.h>
#include<iostream>
typedef struct node{
struct node *left,*right;
int data;
}tree,ttree[200];
int n;
int a[100];
tree *Create(tree *root,int val)
{
if(root==NULL)
{
root=(tree*)malloc(sizeof(tree));
root->data=val;
root->left=NULL;
root->right=NULL;
}
// else if(val==root->data)
// {
// return root->left;
// }不同考虑相同的节点了
else if(val<root->data)
{
root->left=Create(root->left,val);
}
else if(val>root->data)
{
root->right=Create(root->right,val);
}
return root;
}
int height(tree *root)
{
if(root==NULL)
return 0;
int l,r;
l=height(root->left);
r=height(root->right);
return l<r?(r+1):(l+1);
}
//中序遍历就是递增
void Intrave(tree *root)
{
if(root==NULL)
{
return;
}
Intrave(root->left);
printf("%d ",root->data);
Intrave(root->right);
}
int main(void)
{
tree *root=NULL;
scanf("%d",&n);
for(int i=0;i<n;i++)
{
scanf("%d",&a[i]);
root=Create(root,a[i]);
}
int h=height(root);
printf("高度:%d\n",h);
Intrave(root);
return 0;
}