数据结构之二叉树相关操作(一)
#include <iostream>
#include <cstdio>
#include <queue>
using namespace std;
struct TNode{
//定义结构体树结点
char data;
TNode *lchild,*rchild;
};
//凯元版建树方法(先序建树):
void CreatT(TNode* &r){
//建树
char c;
cin>>c;
if(c=='#') r=NULL;
else{
r=new TNode();
r->data=c;
CreatT(r->lchild);
CreatT(r->rchild);
}
}
void PreOrder(TNode* r){
//先序遍历
if(!r) return ; //结点为空时,返回空。
cout<<r->data<<" "; //读取根的数据域
PreOrder(r->lchild); //先序根的左孩子
PreOrder(r->rchild); //先序根的右孩子
return ; //返回空
}
void InOrder(TNode* r){
//中序遍历
if(!r) return ;
InOrder(r->lchild);
cout<<r->data<<" ";
InOrder(r->rchild);
return ;
}
void PostOrder(TNode* r){
//后序遍历
if(!r) return ;
PostOrder(r->lchild);
PostOrder(r->rchild);
cout<<r->data<<" ";
return ;
}
void PrintT(TNode* r){
//打印树
if(!r) return ;
cout<<r->data<<" "; //输出根的数据域
PrintT(r->lchild); //打印根的左孩子
PrintT(r->rchi