3008基于二叉链表的二叉树的遍历(附可能的WA解释)
设二叉树中每个结点的元素均为一个字符,按先序遍历的顺序建立二叉链表,编写三个递归算法分别实现二叉树的先序、中序和后序遍历。
输入
多组数据。每组数据一行,为二叉树的前序序列(序列中元素为‘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解释)相关推荐
- 3006基于二叉链表的二叉树最长路径的求解(附思路)
描述 设二叉树中每个结点的元素均为一个字符,按先序遍历的顺序建立二叉链表,编写算法求出该二叉树中第一条最长的路径. 输入 多组数据.每组数据一行,为二叉树的先序序列(序列中元素为'0'时,表示该结点为 ...
- 3010基于二叉链表的二叉树高度的计算(附思路,WA的一种可能情况及代码)
基于二叉链表的二叉树高度的计算 描述 设二叉树中每个结点的元素均为一个字符,按先序遍历的顺序建立二叉链表,编写递归算法计算二叉树的高度. 输入 多组数据.每组数据一行,为二叉树的前序序列(序列中元素为 ...
- 3010基于二叉链表的二叉树高度的计算
描述 设二叉树中每个结点的元素均为一个字符,按先序遍历的顺序建立二叉链表,编写递归算法计算二叉树的高度. 输入 多组数据.每组数据一行,为二叉树的前序序列(序列中元素为'0'时,表示该结点为空).当输 ...
- 3003基于二叉链表的二叉树左右子树的交换
描述 设二叉树中每个结点的元素均为一个字符,按先序遍历的顺序建立二叉链表,编写递归算法交换该二叉树的左右孩子. 输入 多组数据.每组数据一行,为二叉树的先序序列(序列中元素为'0'时,表示该结点为空) ...
- 【数据结构】基于二叉链表的二叉树结点个数的统计
基于二叉链表的二叉树结点个数的统计 描述 设二叉树中每个结点的元素均为一个字符,按先序遍历的顺序建立二叉链表,编写三个递归算法分别对二叉树的结点(度为0.1.2)个数进行统计. 输入 多组数据.每组数 ...
- 基于二叉链表的二叉树高度的计算
描述 设二叉树中每个结点的元素均为一个字符,按先序遍历的顺序建立二叉链表,编写递归算法计算二叉树的高度. 输入 多组数据.每组数据一行,为二叉树的前序序列(序列中元素为'0'时,表示该结点为空).当输 ...
- 3007基于二叉链表的二叉树叶子结点到根结点的路径的求解(附DFS在树里的应用分析,思路详解)
以下代码用到的前置知识:DFS算法 可以看这个视频~只用看这个就能懂了~ DFS深搜解决迷宫问题(原理分析+代码实现)_哔哩哔哩_bilibilihttps://www.bilibili.com/vi ...
- 3004基于二叉链表的二叉树的双序遍历(附题意解释)
描述 设二叉树中每个结点的元素均为一个字符,按先序遍历的顺序建立二叉链表,编写递归算法实现该二叉树的双序遍历(双序遍历是指对于二叉树的每一个结点来说,先访问这个结点,再按双序遍历它的左子树,然后再一次 ...
- 3009基于二叉链表的二叉树结点个数的统计(附思路)
描述 设二叉树中每个结点的元素均为一个字符,按先序遍历的顺序建立二叉链表,编写三个递归算法分别对二叉树的结点(度为0.1.2)个数进行统计. 输入 多组数据.每组数据一行,为二叉树的前序序列(序列中元 ...
最新文章
- PVD与CVD性能比较
- Tomcat自定义Http错误信息
- 他入狱10年自学数学,如今凭借手稿发了篇论文,被同行评价“足以开辟数论新领域”...
- yield return的理解
- 数据仓库、数据集市、数据湖,这些大数据名词你知道多少?
- 【每日SQL打卡】​​​​​​​​​​​​​​​DAY 14丨报告的记录 I【难度简单】
- 知云文献翻译打不开_比有道更好用的英文文献阅读翻译神器免费啦
- node+读写文件_python高级:2.文件读写part2
- 问题四十七:怎么用ray tracing画superellipsoid (2)
- [转载]DevOps建立全生命周期管理
- 基于ADS仿真的465khz检波电路
- linux进入cbq文件夹,Linux流量控制(SFQ/TBFPRIO/CBQ/HTB原理介绍)
- 程序员微信名昵称_2020最火的微信名有哪些 好听的微信名字推荐
- 解除Windows XP IIS 10个并发连接数的限制
- android判断是否json格式,简单方法判断字符串是否是json字符串
- 11类商标有空调商标哦
- 实验三 基本IO口扩展实验
- 华为云计算基础之Fusion Compute介绍
- unfortunately activity has stopped
- 自建工单(审批流)系统设计