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

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;
}

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

  1. 二叉树的前、中、后序遍历

    所谓二叉树遍历是按某种特定规则,依次对二叉树中的节点进行相应的操作,并且每个节点只操作一次.访问结点所做的操作依赖于具体的应用问题. 遍历是二叉树上最重要的运算之一,也是二叉树进行其它运算的基础. 二 ...

  2. 【数据结构与算法】力扣:二叉树的前、中、后序遍历

    递归法 前序遍历 给你二叉树的根节点 root ,返回它节点值的前序 遍历. 示例 1: 输入:root = [1,null,2,3] 输出:[1,2,3] 示例 2: 输入:root = [] 输出 ...

  3. 二叉树的前、中、后序遍历的代码实现(递归方式)

    测试的二叉树的结构 root lfb1 rtb1rtb2 控制台输出的遍历结果 ======从根节点开始,前序遍历此二叉树======= root lfb1 rtb1 rtb2 ======从根节点开 ...

  4. java中二叉树_Java工程师面试1000题224-递归非递归实现二叉树前、中、后序遍历...

    224.使用递归和非递归实现二叉树的前.中.后序遍历 使用递归来实现二叉树的前.中.后序遍历比较简单,直接给出代码,我们重点讨论非递归的实现. class Node { public int valu ...

  5. 二叉树遍历方法——前、中、后序遍历(图解)

    目录 一.前序遍历 (1)递归版本 (2)非递归版本 二.中序遍历 (1)递归版本 (2)非递归版本 三.后序遍历 (1)递归版本 (2)非递归版本 四.总结 五.测试程序 六.程序输出 二叉树的遍历 ...

  6. 二叉树的前、中、后的非递归遍历

    题目 实现一个链式存储的二叉树,采用非递归的形式,按照前.中.后序的顺序遍历二叉树. 代码 /** * 二叉树的前.中.后序的非递归遍历 **/#include <iostream> us ...

  7. 二叉树第i层中的所有结点_讲透学烂二叉树(二):图中树的定义amp;各类型树的特征分析...

    日常中我们见到的二叉树应用有,Java集合中的TreeSet和TreeMap,C++ STL中的set.map,以及Linux虚拟内存的管理,以及B-Tree,B+-Tree在文件系统,都是通过红黑树 ...

  8. 【二叉树Java】二叉树遍历前序中序后序遍历的非递归写法

    本文主要介绍二叉树前序中序后序遍历的非递归写法 在探讨如何写出二叉树的前序中序后序遍历代码之前,我们先来明确一个问题,前序中序后序遍历根据什么区分? 二叉树的前序中序后序遍历,是相较根节点说的.最先遍 ...

  9. C++实现二叉树 前、中、后序遍历(递归与非递归)非递归实现过程最简洁版本

    本文并非我所写,是复制的该链接中的内容: 最近学习二叉树,想编程实现递归和非递归的实现方式: 递归的方式就不说了,因为大家的递归程序都一样:但是对于非递归的实现方式, 根据这几天的查阅资料已看到差不多 ...

  10. 二叉树顺序存储-实现前序中序后序遍历

    一.顺序存储二叉树简介 二叉树的存储结构有两种,分别为顺序存储和链式存储. 二叉树的顺序存储,指的是使用顺序表(数组)存储二叉树.只有完全二叉树才可以使用顺序表存储.因此,如果我们想顺序存储普通二叉树 ...

最新文章

  1. 机器学习 决策树 ID3
  2. 参展神器| 算法告诉你优先参加哪个会展
  3. Httprunner测试
  4. 【C 语言】数组与指针操作 ( 数组符号 [] 与 指针 * 符号 的 联系 与 区别 | 数组符号 [] 与 指针 * 符号 使用效果 基本等价 | 数组首地址 与 指针 本质区别 )
  5. 一步一步教你在IEDA中快速搭建SpringBoot项目
  6. 终端架构深研,CodeDay 成都站等你
  7. Java中的三态布尔值
  8. 第六节: EF高级属性(二) 之延迟加载、立即加载、显示加载(含导航属性)
  9. futuretask java 并发请求_Java并发机制(9)--Callable、Future、FutureTask的使用
  10. 在千锋学前端的卢同学“不甘于落后,不安于现状”
  11. MVC控制器执行重定向
  12. IDEA 设置文档注释
  13. Zigbee学习计划暂停
  14. seay源代码审计系统的使用方式
  15. 在线网上书店管理系统
  16. pad平板性能测试软件,苹果iPad 2020款评测,最便宜的iPad,性能碾压安卓?
  17. 利用反射等离激元超表面的模拟光计算
  18. 湘潭大学信息安全课作业答案1
  19. Android使用NFC模拟IC卡
  20. 树图 [ TreeMap ]

热门文章

  1. excel 如何批量删除必表中的空白行
  2. oralce分析函数---group by || rollup || cude || grouping || grouping sets
  3. 课得在线:Java程序员未来前景?大龄程序员出路在何方
  4. RIP光栅图像处理器
  5. 不同的国际学校课程毕业后可申请什么学校
  6. 解决VScode中C语言中文乱码问题
  7. excel能改编码_如何修改Excel的编码-excel编码设置,查看excel编码格式
  8. 算法学习-求平方根函数
  9. windows7无法在域中找到计算机账户,关于Windows 7电脑加入域的问题
  10. 2022最新软件测试面试题,看完还怕拿不到offer?