BJFUOJ:基于二叉链表的二叉树高度的计算
#include<bits/stdc++.h>
using namespace std;
int high;
typedef struct BiTnode{
char data;
struct BiTnode *left,*right;
}BiTnode,*BiTree;
void CreatTree(BiTree &t,char s[],int &i){
if(s[i] == '0'){
t = NULL;
}else{
t = new BiTnode;
t->data = s[i];
CreatTree(t->left,s,++i);
CreatTree(t->right,s,++i);
}
}
int High(BiTree &t){
if(t == NULL) return 0;
else if(t->left == NULL && t->right == NULL){
return 1;
}else{
return max(High(t->left) + 1,High(t->right) + 1);
}
}
int main(){
while(1){
high = 0;
char s[100];
cin>>s;
if(s[0] == '0'){
break;
}
BiTree t;
int i = 0;
CreatTree(t,s,i);
high = High(t);
cout<<high<<endl;
}
return 0;
}