代码:
先插入再计算高度。
//求二叉树的高度
#include<stdio.h>
#include<stdlib.h>
typedef struct node* position;
typedef position bintree;
struct node{
int data;
bintree left;
bintree right;
};
bintree insert(bintree t, int data)
{
if(!t)
{
bintree gg;
gg = (bintree)malloc(sizeof(struct node));
gg->data = data;
gg->left = gg->right = NULL;
return gg;
}
else if(data > t->data)
t->right = insert(t->right, data);
else
t->left = insert(t->left, data);
return t;
}
int getheight(bintree t)
{
int m,n;
if(!t)
return 0;
else
{ m = getheight(t->left);
n = getheight(t->right);
if(m>n)
return m+1;
else
return n+1;
}
}
int main()
{
int n;
bintree t = NULL;
scanf("%d",&n);
int num;
for(int i = 0 ;i < n ; i++)
{
scanf("%d",&num);
t = insert(t,num);
}
int q = getheight(t);
printf("%d",q);
}