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

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

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

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

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

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

abc##de#g##f###
结尾无空行
输出样例:
c b e g d f a
结尾无空行

C++:

using namespace std;
#include <algorithm>
#include<cstring>
#include <iostream>
#include<string>
#include<stdio.h>
#include<stdlib.h>
#include<time.h>
#include<string.h>
#include<iomanip>
#include<sstream>
#include<vector>struct TreeNode {char val;TreeNode* left;TreeNode* right;TreeNode() : val(0), left(nullptr), right(nullptr) {}TreeNode(char x) : val(x), left(nullptr), right(nullptr) {}TreeNode(char x, TreeNode* left, TreeNode* right) : val(x), left(left), right(right) {}
};TreeNode *build(const string &s,int& i)
{if (i >= s.size()||s[i]=='#')return NULL;TreeNode* root = new TreeNode(s[i]);root->left = build(s, ++i);root->right = build(s, ++i);return root;
}
vector<char>t;
void travel(TreeNode* root)
{if (root){travel(root->left);t.push_back(root->val);travel(root->right);}
}int main()
{string s; cin >> s;int i = 0;TreeNode* root = build(s, i);travel(root);for (int i = 0; i < t.size(); i++){cout << t[i] << " ";}
}

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

  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. java死锁的产生与解决
  2. mysql 客户服务号获取_《MySQL排错指南》——1.4 获取查询信息-阿里云开发者社区...
  3. apex英雄机器人探路者怎么玩_Apex英雄探路者机器人实战技巧攻略[多图]
  4. 吴恩达深度学习 —— 2.11 向量化
  5. Struts2中动态的指定返回的结果集
  6. 执行truncate引发ORA-02266的问题分析
  7. OpenCV学习笔记02:OpenCV基本图片处理
  8. 随手记android面试题,微众银行风险模型面试随手记(一面+二面)
  9. 数字金融欺诈行为名词表
  10. UML及UML建模工具介绍
  11. Oracle 同义词,赋权语句图解记录
  12. pdf怎么添加水印?
  13. 安全公司整理-方便找工作
  14. 2018.12.15【NOIP提高组】模拟B组 jzoj100047. 基因变异
  15. C语言基础概述(一)
  16. 查询快递 教你一个方法按照物流途径城市筛选签收地
  17. C语言LMS双麦克风消噪算法,芯片内部的噪声抑制算法,语音芯片来说也是一样(双麦克风降噪理念)...
  18. 以word转PDF为例,免费的文档格式转换方法分享
  19. MySQL日期字符串转换成NULL值的异常处理
  20. 什么是Hadoop?大数据与Hadoop简介

热门文章

  1. 求一亿以内的回文质数(素数)
  2. 软件工程--快速原型模型详解
  3. 汉服php素材,【福利】汉服裁剪制作图——收录大全
  4. 道格拉斯-普克抽稀算法 曲线平滑
  5. python josn数据解析
  6. du -c 单位 linux,Linux命令 du
  7. java代码演示经典哲学家就餐问题,以及解决方案
  8. 对数与指数函数的求导
  9. java判断 港(澳)台大陆身份证校验
  10. 中国与印度的GDP深层剖析