1、输入:ABD##E##CF#G###(创建二叉树)
2、输出:先序遍历:ABDECFG
中序遍历:DBEAFGC
后序遍历:DEBGFCA
#include<bits/stdc++.h>
#include<conio.h>
using namespace std;
typedef struct BiTreeNode{
char date;
struct BiTreeNode *lchild;
struct BiTreeNode *rchild;
}BiTreeNode ,*BiTree;
//利用先序输入 建立二叉树
void CreatBiTree(BiTree &T)
{
char date;
date=getchar();
if(date == '#')
T=NULL;
else
{
T = new BiTreeNode;
T->date=date;
CreatBiTree(T->lchild);
CreatBiTree(T->rchild);
}
}
/************递归遍历************/
/*****先序遍历*********/
void PreOrderTraverse(BiTree &T)
{
if(T)
{
cout << T->date << " ";
PreOrderTraverse(T->lchild);
PreOrderTraverse(T->rchild);
}
}
/*******中序遍历*********/
void InOrderTraverse(BiTree &T)
{
if(T)
{
InOrderTraverse(T->lchild);
cout << T->date << " ";
InOrderTraverse(T->rchild);
}
}
/********后序遍历*********/
void PostOrderTraverse(BiTree &T)
{
if(T)
{
PostOrderTraverse(T->lchild);
PostOrderTraverse(T->rchild);
cout << T->date << " ";
}
}
int main()
{
BiTree T=NULL;
cout << "请输入:";
CreatBiTree(T);
cout << endl;
cout << "递归遍历" << endl;
int choose1;
cout << "1.先序遍历" << endl;
cout << "2.中序遍历" << endl;
cout << "3.后序遍历" << endl;
cout << "4.结束" << "\n" << endl;
cout << "选择操作:";
cin >> choose1;
while(choose1)
{
switch(choose1)
{
case 1:
cout << "先序遍历: ";
PreOrderTraverse(T);
cout << "\n" << endl;
break;
case 2:
cout << "中序遍历: ";
InOrderTraverse(T);
cout << "\n" << endl;
break;
case 3:
cout << "后序遍历:";
PostOrderTraverse(T);
cout << "\n" << endl;
break;
case 4:
exit(0);
default:
cout << "输入错误,请重新选择!!!" << endl;
}
cout << "选择操作:";
cin >> choose1;
}
return 0;
}
这篇博客介绍了如何使用递归方法创建二叉树,并给出了输入字符串ABD##E##CF#G###,创建的二叉树在先序、中序、后序遍历下的节点顺序。
255

被折叠的 条评论
为什么被折叠?



