(利用前序遍历)
#include<bits/stdc++.h>
using namespace std;
struct BiNode{
char data; //数据域
struct BiNode *lchild, *rchild;//左右孩子指针
};
class BiTree{
BiNode *root;
BiNode *Create(BiNode *bt);
void PreOrder(BiNode *root);
void Release(BiNode *bt);
public:
BiTree(){root=Create(root);}
~BiTree(){Release(root);}
void PreOrder(){PreOrder(root);}
};
BiNode* BiTree::Create(BiNode *bt){
//建立
char ch;
cin>>ch;
if(ch=='#')
bt=NULL;
else{
bt=new BiNode;
bt->data=ch;
bt->lchild=Create(bt->lchild);
bt->rchild=Create(bt->rchild);
}
return bt;
}
void BiTree::Release(BiNode *bt)
{
if(bt==NULL)return;
else{
Release(bt->lchild);
Release(bt->rchild);
delete bt;
}
}
void BiTree::PreOrder(BiNode *root)
{
if(root==NULL) return;
else{
cout<<root->data;
PreOrder(root->lchild);
PreOrder(root->rchild);
}
}
int main(){
BiTree bt;
bt.PreOrder();
cout<<endl;
char t;
cin>>t;
while(t=='Z')
{
BiTree b;
b.PreOrder();
cin>>t;
}
}