文章目录
一、二叉树的创建及遍历
- 一、二叉树的创建及遍历
- 二、二叉树结点的共同祖先问题
- 三、哈夫曼编码
- 四、二叉树左右子树交换操作
【问题描述】
给出一个按照先序遍历得出的字符串,’#’ 代表空的子节点,大写字母代表节点内容。请通过这个字符串建立二叉树,并分别采用“递归”和“非递归”的先序、中序、后序遍历的算法分别输出每一个非空节点。
【输入形式】
输入只有一行,包含一个字符串S,用来建立二叉树。保证S为合法的二叉树先序遍历字符串,节点内容只有大写字母,且S的长度不超过100。
【输出形式】
共有6行,每一行包含一串字符,表示分别按递归和非递归的先序、中序、后序遍历得出的节点内容,每个字母后输出一个空格。请注意行尾输出换行。
【样例输入】
ABC##DE#G##F###
【样例输出】
A B C D E G F
C B E G D F A
C G E F D B A
A B C D E G F
C B E G D F A
C G E F D B A
【完整代码】
#include
#include
#include
using namespace std;
//构建二叉树
typedef struct BiNode
{
char date;
BiNode* LChild;
BiNode* RChild;
}*Bitree;
//递归创建树
void CreateBitree(Bitree &bt)
{
char ch = getchar();
if (ch == '#') bt = NULL;
else
{
bt = new BiNode;
bt->date = ch;
CreateBitree(bt->LChild);
CreateBitree(bt->RChild);
}
}
//前序递归遍历
void PreOrder(Bitree root)
{
if (root != NULL)
{
coutLChild);
cout LChild;
}
else if (!s.empty())
{
while (!s.empty())
{
cur = s.top();
cout RChild);
cout RChild != r)
{
p = p->RChild;
}
else
{
s.pop();
cout
关注
打赏
最近更新
- 深拷贝和浅拷贝的区别(重点)
- 【Vue】走进Vue框架世界
- 【云服务器】项目部署—搭建网站—vue电商后台管理系统
- 【React介绍】 一文带你深入React
- 【React】React组件实例的三大属性之state,props,refs(你学废了吗)
- 【脚手架VueCLI】从零开始,创建一个VUE项目
- 【React】深入理解React组件生命周期----图文详解(含代码)
- 【React】DOM的Diffing算法是什么?以及DOM中key的作用----经典面试题
- 【React】1_使用React脚手架创建项目步骤--------详解(含项目结构说明)
- 【React】2_如何使用react脚手架写一个简单的页面?