先序序列创建二叉树,输出先序序列、中序序列、后序序列并输出叶子结点数

简介: 先序序列创建二叉树,输出先序序列、中序序列、后序序列并输出叶子结点数

对于给定的二叉树,输出其先序序列、中序序列、后序序列并输出叶子结点数。

3279ed024610f3a313a05000469d6ef9.png


输入格式:

二叉树的先序遍历序列。

提示:一棵二叉树的先序序列是一个字符串,若字符是‘#’,表示该二叉树是空树,否则该字符是相应结点的数据元素。


输出格式:

若是非空二叉树,则输出四行内容 第一行是二叉树的先序遍历序列; 第二行是二叉树的中序遍历序列; 第三行是二叉树的后序遍历序列; 第四行是叶子结点数;

若是空二叉树 只需输出叶子数0


输入样例1:

FCA##DB###EHM###G##

结尾无空行


输出样例1:

1. FCADBEHMG
2. ACBDFMHEG
3. ABDCMHGEF
4. 4

结尾无空行


输入样例2:

#

结尾无空行


输出样例2:

0


#include<bits/stdc++.h>
using namespace std;
typedef struct node *tree;
struct node{
    tree left,right;
    char data;
};
int k;
tree build()
{
    char ch;
    cin>>ch;
    tree t=(tree)new(tree);
    if(ch=='#') t=NULL;
    else
    {
        t->data=ch;
        t->left=build();
        t->right=build();
        if(t->left==NULL&&t->right==NULL) k++;
    }
    return t;
}
void xian(tree t)
{
    if(t)
    {
        cout<<t->data;
        xian(t->left);
        xian(t->right);
    }
}
void zhong(tree t)
{
    if(t)
    {
        zhong(t->left);
        cout<<t->data;
        zhong(t->right);
    }
}
void hou(tree t)
{
    if(t)
    {
        hou(t->left);
        hou(t->right);
        cout<<t->data;
    }
}
int main()
{
    tree t=build();
    if(t)
    {
        xian(t);
        cout<<endl;
        zhong(t);
        cout<<endl;
        hou(t);
        cout<<endl;
    }
    cout<<k;
    return 0;
}




目录
相关文章
|
移动开发 vr&ar
数据库系统概论——关系代数详解
关系代数是一种抽象的查询语言,是关系数据操纵语言的一种传统表达方式,它是利用对关系的运算来表达查询的。任何运算都是将一定的运算符作用于一定的运算对象上,得到预期的运算结果。关系代数的运算对象是关系,运算结果亦为关系。集合运算符将关系看成元组的集合从关系的“水平”方向即行的角度来进行运算专门的关系运算符不仅涉及行而且涉及列算术比较符辅助专门的关系运算符进行操作逻辑运算符辅助专门的关系运算符进行操作。
1437 1
数据库系统概论——关系代数详解
|
物联网 调度
思科无线 AP 模式全解析
【4月更文挑战第22天】
590 0
|
数据安全/隐私保护 Python
BUUCTF [ACTF新生赛2020]base64隐写 1
BUUCTF [ACTF新生赛2020]base64隐写 1
877 0
BUUCTF [ACTF新生赛2020]base64隐写 1
JumpServer——设置网域列表来访问内网机器
JumpServer——设置网域列表来访问内网机器
323 1
JumpServer——设置网域列表来访问内网机器
|
存储 算法 C语言
数据结构基础详解(C语言):单链表_定义_初始化_插入_删除_查找_建立操作_纯c语言代码注释讲解
本文详细介绍了单链表的理论知识,涵盖单链表的定义、优点与缺点,并通过示例代码讲解了单链表的初始化、插入、删除、查找等核心操作。文中还具体分析了按位序插入、指定节点前后插入、按位序删除及按值查找等算法实现,并提供了尾插法和头插法建立单链表的方法,帮助读者深入理解单链表的基本原理与应用技巧。
1826 6
|
Ubuntu 应用服务中间件 nginx
如何在 Ubuntu 操作系统上重新启动 Nginx?
如何在 Ubuntu 操作系统上重新启动 Nginx?
1649 0
如何在 Ubuntu 操作系统上重新启动 Nginx?
|
应用服务中间件
Tomcat打不开startup.bat
Tomcat打不开startup.bat
261 2
|
传感器
示例四、 开关式霍尔传感器测转速
示例四、 开关式霍尔传感器测转速
594 0
示例四、 开关式霍尔传感器测转速
7-10 先序序列创建二叉树,输出先序序列、中序序列、后序序列并输出叶子结点数 (10 分)
7-10 先序序列创建二叉树,输出先序序列、中序序列、后序序列并输出叶子结点数 (10 分)
588 0
7-10 先序序列创建二叉树,输出先序序列、中序序列、后序序列并输出叶子结点数 (10 分)
|
数据可视化 Python
利用Pandas探究自行车租赁随时间及天气变化的分布情况并可视化(附源码 超详细)
利用Pandas探究自行车租赁随时间及天气变化的分布情况并可视化(附源码 超详细)
305 1