7-1 前序序列创建二叉树

编一个程序,读入用户输入的一串先序遍历字符串,根据此字符串建立一个二叉树(以二叉链表存储)。 例如如下的先序遍历字符串: ABC##DE#G##F### 其中“#”表示的是空格,代表一棵空树。然后再对二叉树进行中序遍历,输出遍历结果。

输入格式:
多组测试数据,每组测试数据一行,该行只有一个字符串,长度不超过100。

输出格式:
对于每组数据,

输出二叉树的中序遍历的序列,每个字符后面都有一个空格。

每组输出一行,对应输入的一行字符串。

输入样例:(及其对应的二叉树)

abc##de#g##f###
输出样例:
c b e g d f a

代码:

#include <stdio.h>
#include <stdlib.h>
typedef struct node *BinTree;
char str[110];
int i;
struct node
{char data;BinTree left;BinTree right;
};
BinTree CreatTree(BinTree T)
{char x;x=str[i++];if(x=='#')T=NULL;else{BinTree newnode=(BinTree)malloc(sizeof(struct node));newnode->left=newnode->right=NULL;newnode->data=x;T=newnode;T->left=CreatTree(T->left);T->right=CreatTree(T->right);}return T;
}
void print(BinTree T)
{if(T==NULL)return;else{print(T->left);printf("%c ",T->data);print(T->right);}
}
int main()
{while(scanf("%s",str)!=EOF){BinTree T=CreatTree(T);print(T);i=0;printf("\n");}return 0;
}

202206201631一

7-1 前序序列创建二叉树相关推荐

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

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

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

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

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

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

  4. 按照前序遍历创建二叉树及树的四种遍历方式

    一.二叉树的介绍 二叉树的特点是二叉树的每个结点的度都不大于2,可以视为每个结点都有左孩子和右孩子.故二叉树结点的数据结构为 二.二叉树的特点 1.设根结点所在的层数为第1层,则第i层最多有个结点. ...

  5. 扩展二叉树的中序序列创建二叉树?

    一.前言 我们都知道,任意一棵二叉树的前序序列.中序序列.后序序列都是唯一的.但是,反过来是否唯一对应呢?

  6. 先根序列创建二叉树c语言,用C语言创建二叉树并先序遍历.doc

    用C语言创建二叉树并先序遍历 用C语言创建二叉树并 #include "stdio.h" #include "stdlib.h" typedef struct ...

  7. 根据先序序列和中序,后序和中序序列创建二叉树

    思考:如何才能确定一棵树? 结论:    通过中序遍历和先序遍历可以确定一个树                 通过中序遍历和后续遍历可以确定一个树 通过先序遍历和后序遍历确定不了一个树. 算法实现: ...

  8. 按照层次序列创建二叉树,并判断二叉树是否为二叉搜索树

    首先定义树节点的数据结构,如下: struct TreeNode { int val; struct TreeNode *left; struct TreeNode *right; }; 两个函数,用 ...

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

    思路分析: 这道题考察二叉树的建立以及二叉树的前序遍历.中序遍历和后序遍历.首先按照先序建立二叉树.在这期间需要先建立一个结构体,包括当前节点的值,以及它的左儿子和右儿子.注意这里不能直接存左儿子和右 ...

  10. 利用二叉树先序遍历序列创建二叉树的算法

    根据C语言数据结构第六版课本算法5.3 void CreateBiTree(BiTree &T) { //算法5.3 按先序遍历输入二叉树中的节点的值//构造二叉链表表示的二叉树TTElemT ...

最新文章

  1. CVPR 2019收录论文ID公开,你上榜了吗?
  2. pandas改变dataframe的列的顺序、改变数据列的排列次序
  3. 管理不再是交换,而是相互成全!做到这三点,管理更有成效!
  4. SpringBoot Mybatis EnumTypeHandler自定义统一处理器
  5. sublime67linter-php,Sublime Text 3 搭建 React.js 开发环境
  6. JavaScript--DOM操作表格及样式(21)
  7. python之print实践
  8. 【LeetCode 剑指offer刷题】矩阵题1:4 有序矩阵中的查找( 74. Search a 2D Matrix )(系列)...
  9. pytorch macos_Windows,Linux和MacOS上的PyTorch安装
  10. [ZT]IBM骨灰心得:在你决定购买IBM某个系列前你认真思考过这些吗?
  11. 中国大陆新身份证号码算法
  12. 说话人识别(声纹识别)综述
  13. 深度学习环境配置避坑-CUDA11.0+DGL1.8
  14. day03_《谷粒商城》的完整流程(详细版二)
  15. 数据中心机房物理建设
  16. 网络变压器、网络通讯用磁性器件的要求和发展趋势
  17. Chrome调试工具调试CSS
  18. 在 Chrome 中清除、启用和管理 Cookie
  19. c语言tan函数源码,tan - [ C语言中文开发手册 ] - 在线原生手册 - php中文网
  20. NVMe协议详解(三)

热门文章

  1. 关于原型设计的工具——AXURE
  2. 谁说不同品牌内存无法兼容-关键调整频率和内存时序
  3. VMWare共享文件夹的使用
  4. vs2015中工具箱不显示DevExpress控件的解决办法
  5. 面向CRAN的5G前传方案研究
  6. 企业微信跳转第三方APP
  7. 一文看懂互联网支付系统整体架构
  8. 小程序与APP和公众号的区别
  9. mysql临键锁_innodb临键锁锁定范围
  10. Word文档docx的图标显示异常,doc的显示正常,但是可以用,解决办法