100字范文,内容丰富有趣,生活中的好帮手!
100字范文 > 数据结构实验之二叉树二:遍历二叉树(中序后序遍历)

数据结构实验之二叉树二:遍历二叉树(中序后序遍历)

时间:2023-12-16 09:53:04

相关推荐

数据结构实验之二叉树二:遍历二叉树(中序后序遍历)

数据结构实验之二叉树二:遍历二叉树

Time Limit:1000MS Memory Limit:65536KB SubmitStatistic

Problem Description

已知二叉树的一个按先序遍历输入的字符序列,如abc,,de,g,,f,,,(其中,表示空结点)。请建立二叉树并按中序和后序的方式遍历该二叉树。

Input

连续输入多组数据,每组数据输入一个长度小于50个字符的字符串。

Output

每组输入数据对应输出2行:

第1行输出中序遍历序列;

第2行输出后序遍历序列。

Example Input

abc,,de,g,,f,,,

Example Output

cbegdfa

cgefdba

先序遍历:根 左子树 右子树

中序遍历: 左子树 根 右子树

后序遍历: 左子树 右子树 根

#include<iostream>#include<cstdio>#include<cstdlib>using namespace std;typedef struct BiTNode{char data;struct BiTNode *Left,*Right;}BiTNode,*BiTree;string s;int cnt;void CreateBiTree(BiTree &T){char c = s[++cnt];if(c ==',') T = NULL;else{T = (BiTree)malloc(sizeof(BiTNode));T->data = c;CreateBiTree(T->Left);CreateBiTree(T->Right);}}void Visit(BiTree T){if(T->data != '#') cout << T->data;}void PreOrder(BiTree T){if(T != NULL){Visit(T);PreOrder(T->Left);PreOrder(T->Right);}}void InOrder(BiTree T){if(T!=NULL){InOrder(T->Left);Visit(T);InOrder(T->Right);}}void BackOrder(BiTree T){if(T!=NULL){BackOrder(T->Left);BackOrder(T->Right);Visit(T);}}int main(){BiTree T;while(cin >> s){cnt = -1;CreateBiTree(T);InOrder(T);cout << endl;BackOrder(T);cout << endl;}return 0;}

本内容不代表本网观点和政治立场,如有侵犯你的权益请联系我们处理。
网友评论
网友评论仅供其表达个人看法,并不表明网站立场。