
typedef struct node
{
int key
struct node *lchild, *rchild
}Node, *BST
BST BSTInsect(BST root, int element) {
BST q, p, s
q = NULL
p = root
while(p != NULL) {
if(element == p->key) return 0
q = p
if(element < p->key) p= p->lchild
else p = p->rchild
}
s = (BST)malloc(sizeof(Node))
s->key = element
if(q == NULL) root = s
else if(element < q->key) q->lchild = s
else q->rchild = s
return root
}
//root的高度就是二叉树的最大深度,用后序遍历,就是层次数
int getLevel(BST root){
//这里输入你的代码
if(root == NULL) return 0
int leftheight = getLevel(root->lchild)
int rightheight = getLevel(root->rchild)
int height = fmax(leftheight, rightheight) +1
//注意c语言函数是fmax,不是max
return height
}
void inOrderTraverse(BST root){
if(root != NULL){
inOrderTraverse(root->lchild)
printf("%d ", root->key)
inOrderTraverse(root->rchild)
}
}
int main(){
int n,i,element,level
BST root = NULL
scanf("%d", &n)
for(i=0
scanf("%d", &element)
root = BSTInsect(root, element)
}
level = getLevel(root)
printf("%d\n", level)
inOrderTraverse(root)
return 0
}