根据给定的字符串生成二叉树并前序、中序、后序此二叉树。

Input
给定一字符串,其中#表示空。
例:上图输入为
HDB#A##C##G#FE###
Output
分别输出此二叉树前序、中序和后序。
Sample Input
HDB#A##C##G#FE###
Sample Output
HDBACGFE
BADCHGEF
ABCDEFGH
#include <iostream>
#include <cstdio>
#include <cstdlib>
#include <algorithm>
const int N=10e+5;
using namespace std;
typedef struct BiTNode
{
char data;
struct BiTNode *lchild,*rchild;
}BiTNode,*BiTree;
void Preorder(BiTree T); //先序
void Inorder(BiTree T); //中序
void Postorder(BiTree T); //后序
int CreateBiTree(BiTree &T)
{
char data;
scanf("%c",&data);
if(data=='#')
T=NULL;
else
{
T=(BiTree)malloc(sizeof(BiTNode));
T->data=data;
CreateBiTree(T->lchild);
CreateBiTree(T->rchild);
}
return 0;
}
void visit(BiTree T)
{
if(T->data!='#')
cout<<T->data;
}
void Preorder(BiTree T) //先序
{
if(T!=NULL)
{
visit(T);
Preorder(T->lchild);
Preorder(T->rchild);
}
}
void Inorder(BiTree T)
{
if(T!=NULL)
{
Inorder(T->lchild);
visit(T);
Inorder(T->rchild);
}
}
void Postorder(BiTree T)
{
if(T!=NULL)
{
Postorder(T->lchild);
Postorder(T->rchild);
visit(T);
}
}
int main()
{
BiTree T;
CreateBiTree(T);
Preorder(T);
cout<<endl;
Inorder(T);
cout<<endl;
Postorder(T);
cout<<endl;
return 0;
}
本文介绍了一种从给定字符串构建二叉树的方法,并演示了如何通过编程实现对该二叉树进行前序、中序和后序遍历。文章提供了完整的C++代码示例,有助于读者理解二叉树的创建过程及其不同遍历方式的应用。
3950

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



