思路分析:

这道题考察二叉树的建立以及二叉树的前序遍历、中序遍历和后序遍历。首先按照先序建立二叉树。在这期间需要先建立一个结构体,包括当前节点的值,以及它的左儿子和右儿子。注意这里不能直接存左儿子和右儿子的值,因为每个节点是一个结构体,三个参数是一个整体,因此需要指向地址。

代码实现:

#include<bits/stdc++.h>
using namespace std;
typedef struct node
{char data;//当前节点的值struct node *left;//左儿子struct node *right;//右儿子
}node;
node *tree;
int sum=0;
node *creattree()
{char ch;node *t;cin>>ch;if(ch=='#')t=NULL;///如果遇到了‘#’则返回空else{t=(node*)malloc(sizeof(node)); //动态分配内存t->data=ch;//给当前节点赋值t->left=creattree();//利用递归给左儿子赋值t->right=creattree();//利用递归给右儿子赋值}return t;
}
void qianorder(node *t)//前序遍历
{    if(t==NULL)return;cout<<t->data;qianorder(t->left);qianorder(t->right);if(t->left==NULL&&t->right==NULL)//如果当前节点的左儿子和右儿子都是空的话,则证明它是叶子节点sum++;
}
void zhongorder(node *t)//中序遍历
{if(t==NULL)return;zhongorder(t->left);cout<<t->data;zhongorder(t->right);
}
void houorder(node *t)//后序遍历
{if(t==NULL)return;houorder(t->left);houorder(t->right);cout<<t->data;
}
int main()
{tree=creattree();//建树操作if(tree==NULL)cout<<0;else{qianorder(tree);cout<<endl;zhongorder(tree);cout<<endl;houorder(tree);cout<<endl;cout<<sum;}return 0;
}

天梯选拔:先序序列创建二叉树,输出先序序列、中序序列、后序序列并输出叶子结点数相关推荐

  1. 【必拿下系列】106. 从中序与后序遍历序列构造二叉树105从前序与中序遍历序列构造二叉树

    两题各自的链接放这里了: 链接: 106 链接: 105 106.从中序与后序遍历序列构造二叉树 如果你是不知道理论的,那就得仔细分析了, 举个例子: 输入:inorder = [9,3,15,20, ...

  2. 7-10 先序序列创建二叉树,输出先序序列、中序序列、后序序列并输出叶子结点数 (10 分)

    7-10 先序序列创建二叉树,输出先序序列.中序序列.后序序列并输出叶子结点数 (10 分) 对于给定的二叉树,输出其先序序列.中序序列.后序序列并输出叶子结点数. 输入格式: 二叉树的先序遍历序列. ...

  3. 数据结构与算法实验 实验6:二叉树ADT的二叉链式实现 (由完全前序序列创建二叉树 / 求二叉树的节点数/树高/叶子节点数 /先序中序后序层序遍历)

    假设二叉数的数据元素为字符,采用二叉链式存储结构.请编码实现二叉树ADT,其中包括创建二叉树.遍历二叉树(深度.广度).求二叉树的深度(高度).计算二叉树的元素个数.计算二叉树的叶子数.二叉树的格式输 ...

  4. 由标明空子树的先序遍历序列创建二叉树

    由标明空子树的先序遍历序列创建二叉树 i=0 def createBiTree2(preOrder): # i为常数0 global i c = preOrder[i] # 取字符 if c != ' ...

  5. XDOJ 363 输出快速排序递归算法隐含递归树的后序遍历序列 AC

    像我这样的菜鸡也没有什么能输出的,好像我写题解也不算输出. 最近期末了,写数据结构实验的时候,这个题写了挺久的,搞出来记录一下. 输出快速排序递归算法隐含递归树的后序遍历序列 描述: 快速排序递归算法 ...

  6. 前序中序、后序中序遍历创建二叉树,并检验是否是二叉搜索树,若是则转换为双向链表

    finalbst.h //该程序的作用是根据所给的前序序列以及中序序列或者中序序列以及后序序列创建二叉树 #include <iostream> #include <vector&g ...

  7. 根据前序遍历和中序遍历创建二叉树

    根据前序遍历和中序遍历创建二叉树 题目要求如下: 给定某一个二叉树的前序遍历和中序遍历,要求据此创建一颗符合这样遍历顺序的二叉树. 前序遍历和中序遍历的概念以及特性: 前序遍历:先遍历节点本身,再遍历 ...

  8. 【数据结构】先序遍历+中序遍历创建二叉树(C++实现)

    创建如图所示的二叉树. 先序遍历为:ABDGECF 中序遍历为:DGBEAFC 创建结构体 定义二叉树中每个结点的数据,以及左右孩子. typedef struct BiNode {char data ...

  9. 计算二叉树的深度和叶子结点数

    目录 一.求给定二叉树的深度 二.求给定二叉树中的叶子结点数 三.例题 一.求给定二叉树的深度 二叉树的深度就是二叉树中结点的最大层次.如果二叉树是空树,则深度为0:否则,可分别求二叉树根的左子树和右 ...

  10. C++数据结构与算法—用递归方法求二叉树的叶子结点数

    用递归方法写一个算法,求二叉树的叶子结点数int leafnum(BTREE T). 要求: 1.定义二叉树的抽象数据类型和型BTREE,并定义基本操作. 2.编写函数1eafnum(BTREE T, ...

最新文章

  1. 海思3559A上编译FFmpeg源码操作步骤
  2. android 添加日程失败,Andriod向系统日历添加日程
  3. 为什么有的项目不能打断点_《街霸:对决》:有效利用“打断”机制,让玩家在战斗中越级战斗...
  4. 【C++】 C++虚函数表详细分析(上)
  5. form表单获取input对象浏览器区别
  6. SAP BTP SDK for iOS 介绍
  7. 看完这篇 HashMap ,和面试官扯皮就没问题了
  8. 腾讯广告“虚拟IP”赛题突出重围,入选第七届“互联网+”双创大赛产业命题
  9. 设计模式-责任链模式(17)
  10. VSCode使用EmmyLua调试Lua代码
  11. 数据权属界定面临的问题困境与破解思路
  12. container_of的用法
  13. java 刽子手图像代码_刽子手游戏
  14. Unity ProjectTiny用纯ECS写个跃动的小球
  15. UTF-8编码转中文解码
  16. 手把手教你做html日历
  17. 使用U盘win10家庭版本系统重装
  18. 基于VC++的七参数转换实现
  19. URL编码和Base64编码
  20. 解决实验室服务器无法连网问题

热门文章

  1. 安科瑞智能操控无线测温装置在江苏某化工产业园项目的应用
  2. Git版本控制__分支管理
  3. VMware Workstation 安装 CentOS-7 (1804) 教程
  4. mysql bulkupdate_django_bulk_update源码分析
  5. 免费字体下载,在线设计,不怕找不到好字体
  6. 【渝粤教育】国家开放大学2019年春季 3938管理英语2 参考试题
  7. 新手坐高铁怎么找车厢_高铁怎么找车厢,问工作人员/根据候车站台地标颜色找...
  8. [C#]获取窗口客户区域、标题栏高度、菜单栏高度、边框宽度正确方法
  9. 网络营销实战课-微博实操
  10. 2021年高压电工考试报名及高压电工最新解析