递归法创建二叉树
1.内容简介
- 先序法创建新二叉树
- 先序、中序、后序遍历二叉树
2.结构体展示
typedef struct tree{ char data; /*字符类型data存放该结点的内容*/ struct tree *lchild,*rchild; /*lchild和rchild为该结点的左右子树*/ }Tree;
3.代码思路
- 先序:根结点->左结点->右结点
- 中序:左结点->根结点->右结点
- 后序:左结点->右结点->根结点
4.代码展示
- 先序法创建新二叉树
void CreatBTree(Tree *&T){ //先序创建二叉树 T=new Tree; T->lchild=NULL; T->rchild=NULL; char data; cin>>data; if(data=='#'){ /*结束标识符为'#'*/ T=NULL; return; }else{ T->data=data; } CreatBTree(T->lchild); CreatBTree(T->rchild); }
- 先序遍历二叉树
void PreOrder(Tree *T){ //前序遍历二叉树 if(T!=NULL){ cout<<T->data<<" "; PreOrder(T->lchild); PreOrder(T->rchild); } }
- 中序遍历二叉树
void InOrder(Tree *T){ //中序遍历二叉树 if(T!=NULL){ InOrder(T->lchild); cout<<T->data<<" "; InOrder(T->rchild); } }
- 后序遍历二叉树
void PostOrder(Tree *T){ //后序遍历二叉树 if(T!=NULL){ PostOrder(T->lchild); PostOrder(T->rchild); cout<<T->data<<" "; } }
- 主函数
int main(){ Tree *T; cout<<"输入先序创建二叉树的序列:"<<endl; CreatBTree(T); cout<<"先序遍历的结果:"<<endl; PreOrder(T); cout<<endl; cout<<"中序遍历的结果:"<<endl; InOrder(T); cout<<endl; cout<<"后序遍历的结果:"<<endl; PostOrder(T); cout<<endl; return 0; }
4.运行结果
- 示范二叉树
- 运行截图