描述

设二叉树中每个结点的元素均为一个字符,按先序遍历的顺序建立二叉链表,编写三个递归算法分别实现二叉树的先序、中序和后序遍历。

输入

多组数据。每组数据一行,为二叉树的前序序列(序列中元素为‘0’时,表示该结点为空)。当输入只有一个“0”时,输入结束。

输出

每组数据输出三行,为二叉树的先序、中序和后序序列。

输入样例 1

abcd00e00f00ig00h00
abd00e00cf00g00
0

输出样例 1

abcdefigh
dcebfagih
decfbghia
abdecfg
dbeafcg
debfgca

思路:

就是PPT上或者是课本里写的前序中序后序遍历算法,遍历算法不会的话还是要先学会哦。

可能出现的WA:如果只有前序正确,看一下自己中序后序的递归那里,是不是写顺手就调用的是前序的Traverse函数(汗,居然是这个错误,真是粗心大意……),所以这里不要重载函数了!!就写不同的名字吧!

#include <iostream>
using namespace std;
typedef struct BNode
{char data;struct BNode* lchild, * rchild;
}*BTree, BNode;
void Create(BTree& bt)
{char c;cin >> c;if (c == '0')bt = NULL;else{bt = new BNode;bt->data = c;Create(bt->lchild);Create(bt->rchild);}
}
void Create(BTree& bt, char c)
{if (c == '0')bt = NULL;else{bt = new BNode;bt->data = c;Create(bt->lchild);Create(bt->rchild);}
}
void Traverse(BTree bt)
{if(bt){cout << bt->data;Traverse(bt->lchild);Traverse(bt->rchild);}
}
void LTraverse(BTree bt)
{if (bt){LTraverse(bt->lchild);cout << bt->data;LTraverse(bt->rchild);}
}
void RTraverse(BTree bt)
{if (bt){RTraverse(bt->lchild);RTraverse(bt->rchild);cout << bt->data;}
}
int main()
{while (1){char c;cin >> c;if (c == '0')break;BTree b;Create(b, c);Traverse(b);cout << endl;LTraverse(b);cout << endl;RTraverse(b);cout << endl;}return 0;
}

3008基于二叉链表的二叉树的遍历(附可能的WA解释)相关推荐

  1. 3006基于二叉链表的二叉树最长路径的求解(附思路)

    描述 设二叉树中每个结点的元素均为一个字符,按先序遍历的顺序建立二叉链表,编写算法求出该二叉树中第一条最长的路径. 输入 多组数据.每组数据一行,为二叉树的先序序列(序列中元素为'0'时,表示该结点为 ...

  2. 3010基于二叉链表的二叉树高度的计算(附思路,WA的一种可能情况及代码)

    基于二叉链表的二叉树高度的计算 描述 设二叉树中每个结点的元素均为一个字符,按先序遍历的顺序建立二叉链表,编写递归算法计算二叉树的高度. 输入 多组数据.每组数据一行,为二叉树的前序序列(序列中元素为 ...

  3. 3010基于二叉链表的二叉树高度的计算

    描述 设二叉树中每个结点的元素均为一个字符,按先序遍历的顺序建立二叉链表,编写递归算法计算二叉树的高度. 输入 多组数据.每组数据一行,为二叉树的前序序列(序列中元素为'0'时,表示该结点为空).当输 ...

  4. 3003基于二叉链表的二叉树左右子树的交换

    描述 设二叉树中每个结点的元素均为一个字符,按先序遍历的顺序建立二叉链表,编写递归算法交换该二叉树的左右孩子. 输入 多组数据.每组数据一行,为二叉树的先序序列(序列中元素为'0'时,表示该结点为空) ...

  5. 【数据结构】基于二叉链表的二叉树结点个数的统计

    基于二叉链表的二叉树结点个数的统计 描述 设二叉树中每个结点的元素均为一个字符,按先序遍历的顺序建立二叉链表,编写三个递归算法分别对二叉树的结点(度为0.1.2)个数进行统计. 输入 多组数据.每组数 ...

  6. 基于二叉链表的二叉树高度的计算

    描述 设二叉树中每个结点的元素均为一个字符,按先序遍历的顺序建立二叉链表,编写递归算法计算二叉树的高度. 输入 多组数据.每组数据一行,为二叉树的前序序列(序列中元素为'0'时,表示该结点为空).当输 ...

  7. 3007基于二叉链表的二叉树叶子结点到根结点的路径的求解(附DFS在树里的应用分析,思路详解)

    以下代码用到的前置知识:DFS算法 可以看这个视频~只用看这个就能懂了~ DFS深搜解决迷宫问题(原理分析+代码实现)_哔哩哔哩_bilibilihttps://www.bilibili.com/vi ...

  8. 3004基于二叉链表的二叉树的双序遍历(附题意解释)

    描述 设二叉树中每个结点的元素均为一个字符,按先序遍历的顺序建立二叉链表,编写递归算法实现该二叉树的双序遍历(双序遍历是指对于二叉树的每一个结点来说,先访问这个结点,再按双序遍历它的左子树,然后再一次 ...

  9. 3009基于二叉链表的二叉树结点个数的统计(附思路)

    描述 设二叉树中每个结点的元素均为一个字符,按先序遍历的顺序建立二叉链表,编写三个递归算法分别对二叉树的结点(度为0.1.2)个数进行统计. 输入 多组数据.每组数据一行,为二叉树的前序序列(序列中元 ...

最新文章

  1. PVD与CVD性能比较
  2. Tomcat自定义Http错误信息
  3. 他入狱10年自学数学,如今凭借手稿发了篇论文,被同行评价“足以开辟数论新领域”...
  4. yield return的理解
  5. 数据仓库、数据集市、数据湖,这些大数据名词你知道多少?
  6. 【每日SQL打卡】​​​​​​​​​​​​​​​DAY 14丨报告的记录 I【难度简单】
  7. 知云文献翻译打不开_比有道更好用的英文文献阅读翻译神器免费啦
  8. node+读写文件_python高级:2.文件读写part2
  9. 问题四十七:怎么用ray tracing画superellipsoid (2)
  10. [转载]DevOps建立全生命周期管理
  11. 基于ADS仿真的465khz检波电路
  12. linux进入cbq文件夹,Linux流量控制(SFQ/TBFPRIO/CBQ/HTB原理介绍)
  13. 程序员微信名昵称_2020最火的微信名有哪些 好听的微信名字推荐
  14. 解除Windows XP IIS 10个并发连接数的限制
  15. android判断是否json格式,简单方法判断字符串是否是json字符串
  16. 11类商标有空调商标哦
  17. 实验三 基本IO口扩展实验
  18. 华为云计算基础之Fusion Compute介绍
  19. unfortunately activity has stopped
  20. 自建工单(审批流)系统设计

热门文章

  1. slz-linux虚拟机的安装-VMware
  2. Redis从基础命令到实战之散列类型(Hash)
  3. jqurey ajax 的动态添加二级联动下拉菜单
  4. Nginx配置wss访问实现微信小程序的websocket通信
  5. MOSS 工作流 vs2008+win2008
  6. nRF52832 BLE_DFU空中升级OTA(一)安装软件(SDK14.2.0)
  7. 查看本机装的 JDK 是32位还是64位的
  8. 浙大1002Fire Net心得
  9. 最简单的ajax示例
  10. 网站设置404错误页