创建名为Traverse工程及同名C++SourceFile(C++源文件)。2)初始化一个数据元素为字符串类型的二叉树,并对其实现创建及先序、中序、后序三种遍历类型定义二叉链表存储结构;p127B、基本操作1)创建一棵二叉树voidCreatBiTree(BiTree*T);p1311、提取用户输入值x; 2、判断用户输入值是否为#,3、若为#则建立空子树;4、若不为#,创建新的结点空间存储根结点,其data值为c,左子树,右子树递归调用CreatBiTree函数。2)二叉树的遍历判;p1291、二叉树的先序遍历:1)先访问并输出根节点,在采用相同方法递归遍历其左子树及右子树。2、二叉树的中序遍历;1)先递归遍历其左子树,后访问并输出根节点,最后采用相同方法递归遍历其右子树。3、二叉树的后序遍历:1)先递归遍历其左子树及右子树,后访问并输出根节点
时间: 2023-12-10 22:41:15 浏览: 129
下面是Traverse工程及同名C++源文件的实现:
```C++
#include<iostream>
#include<string>
using namespace std;
//定义二叉树的结构体
struct BiTNode
{
char data;
BiTNode* lchild;
BiTNode* rchild;
};
//创建二叉树
void CreatBiTree(BiTNode** T)
{
char ch;
cin >> ch;
if (ch == '#')
*T = NULL;
else
{
*T = new BiTNode;
(*T)->data = ch;
CreatBiTree(&((*T)->lchild));
CreatBiTree(&((*T)->rchild));
}
}
//先序遍历
void PreorderTraversal(BiTNode* T)
{
if (T != NULL)
{
cout << T->data << " ";
PreorderTraversal(T->lchild);
PreorderTraversal(T->rchild);
}
}
//中序遍历
void InorderTraversal(BiTNode* T)
{
if (T != NULL)
{
InorderTraversal(T->lchild);
cout << T->data << " ";
InorderTraversal(T->rchild);
}
}
//后序遍历
void PostorderTraversal(BiTNode* T)
{
if (T != NULL)
{
PostorderTraversal(T->lchild);
PostorderTraversal(T->rchild);
cout << T->data << " ";
}
}
int main()
{
BiTNode* T = NULL;
cout << "请输入二叉树的先序序列(以#代表空节点):" << endl;
CreatBiTree(&T);
cout << "先序遍历结果为:" << endl;
PreorderTraversal(T);
cout << endl;
cout << "中序遍历结果为:" << endl;
InorderTraversal(T);
cout << endl;
cout << "后序遍历结果为:" << endl;
PostorderTraversal(T);
cout << endl;
return 0;
}
```
在程序中,我们使用了递归的方式来创建二叉树,并实现了先序、中序和后序三种遍历方式。用户输入的二叉树先序序列以#代表空节点,程序会自动创建对应的二叉树并进行遍历输出。
阅读全文