先序创建二叉树及求高度打印
#include<iostream>
#include<cstdlib>
using namespace std;
typedef struct node{
struct node* lchild;
char data;
struct node* rchild;
}BTNode;
int Pos=0;
char str[500];
void create(BTNode* &T){
char tmp;
T=NULL;
tmp=str[Pos++];
if(tmp!='#'){
T=(BTNode*)malloc(sizeof(BTNode));
T->data=tmp;
create(T->lchild);
create(T->rchild);
}
}
void print(BTNode* T)
{
if(T!=NULL){
cout<<T->data;
print(T->lchild);
print(T->rchild);
}
}
int BTh(BTNode* T){
int lh,rh;
if(T==NULL) return 0;
else{
lh=BTh(T->lchild);
rh=BTh(T->rchild);
return (lh>rh)?(lh+1):(rh+1);
}
}
int main()
{
cin>>str;
BTNode* T;
create(T);
print(T);
int m=BTh(T);
cout<<m;
return 0;
}