编一个程序,读入用户输入的一串先序遍历字符串,根据此字符串建立一个二叉树(以指针方式存储)。

例如如下的先序遍历字符串:ABC##DE#G##F###
其中“#”表示的是空格,空格字符代表空树。建立起此二叉树以后,再对二叉树进行中序遍历,输出遍历结果。

输入:输入包括1行字符串,长度不超过100。

输出:可能有多组测试数据,对于每组数据,

输出将输入字符串建立二叉树后中序遍历的序列,每个字符后面都有一个空格。
每个输出结果占一行。

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

#include<iostream>
#include<string>
using namespace std;
struct BNode{//二叉树节点BNode(const char d='#'):data(d), left(nullptr), right(nullptr) {};char data;BNode* left;BNode* right;
};
//根据先序遍历构建一棵二叉树,返回root指针
BNode* constructBinaryTree(const string& preOrder, unsigned& index){if (preOrder.size() == 0 || index == preOrder.size() || preOrder[index] == '#')//若空串或者index超出范围,则返回空指针return nullptr;BNode* T = new BNode(preOrder[index++]);T->left = constructBinaryTree(preOrder, index);T->right = constructBinaryTree(preOrder, ++index);return T;
}
//中序遍历
void mediaOrder(BNode* T){if (T != nullptr){mediaOrder(T->left);cout << T->data << " ";mediaOrder(T->right);}
}
int main(){string str;while (cin >> str){unsigned index = 0;BNode* root = constructBinaryTree(str, index);mediaOrder(root);cout << endl;}return 0;
}

根据先序遍历建立一个二叉树相关推荐

  1. 【算法学习笔记】二叉树的基本操作实现和应用举例,根据先序与中序遍历建立二叉树的实现

    基本操作 给某结点插入一个左孩子 删除二叉树中某结点的左子树 根据先序与中序遍历建立二叉树 应用举例 查找数据元素 二叉链表存储结构 统计叶结点的数目 基本操作 通常有:建立空二叉树.生成以X为根节点 ...

  2. [LeetCode] Construct Binary Tree from Preorder and Inorder Traversal 由先序和中序遍历建立二叉树...

    Given preorder and inorder traversal of a tree, construct the binary tree. Note: You may assume that ...

  3. LeetCode 105. Construct Binary Tree from Preorder and Inorder Traversal 由前序和中序遍历建立二叉树 C++...

    LeetCode 105. Construct Binary Tree from Preorder and Inorder Traversal 由前序和中序遍历建立二叉树 C++ Given preo ...

  4. 根据二叉树的先序遍历和中序遍历建立二叉树

    根据二叉树的先序遍历和中序遍历建立二叉树 rebacktree 根据二叉树的先序遍历和中序遍历建立二叉树. rebacktree1 根据二叉树的后序序遍历和中序遍历建立二叉树. #include &q ...

  5. 72.编辑距离105.前序中序遍历序列构造二叉树151.翻转字符串里的单词104.二叉树的最大深度76.最小覆盖子串110.平衡二叉树31.下一个排列

    72.编辑距离 给你两个单词 word1 和 word2, 请返回将 word1 转换成 word2 所使用的最少操作数 .你可以对一个单词进行如下三种操作:插入一个字符,删除一个字符,替换一个字符. ...

  6. 由序列确定二叉树:前序序列和中序序列构造二叉树 后序序列和中序序列构造二叉树 层次遍历序列和中序遍历序列构造二叉树 代码实现(c语言)

    下面三种序列可以唯一的构造唯一的一棵二叉树: 前序序列和中序序列构造二叉树 后序序列和中序序列构造二叉树 层次遍历序列和中序遍历序列构造二叉树 #include<stdio.h> #inc ...

  7. #swust oj971 和972统计利用先序遍历创建的二叉树的深度和宽度

    971: 统计利用先序遍历创建的二叉树的深度 思路: 1.先序递归遍历创建二叉树 2.当接收的数据是字符"#"时表示该结点不需要创建,否则创建该结点 3.最后后序遍历算法统计二叉树 ...

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

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

  9. 72 中序遍历和后序遍历树构造二叉树

    原题网址:https://www.lintcode.com/problem/construct-binary-tree-from-inorder-and-postorder-traversal/des ...

最新文章

  1. mysql命令行各个参数解释
  2. python上机实验报告读取文件_Python程序设计实验报告八 : 文件
  3. rhel5下samba的配置
  4. 异星工厂 自动机器人_插件机机器人能够实现工厂自动化
  5. 知乎大V推荐!面试官6个灵魂拷问,原理+实战+视频+源码
  6. Simulink之功率场效应晶体管(P-MOSFET)
  7. 戴志坚接替李小加出任职港交所行政总裁 基本年薪700万港元
  8. 引入对抗训练的对比学习
  9. 诺基亚成功转型:引领新一代5G技术 布局物联网
  10. java.sql包是jdbc_sqljdbc4.jar官方下载|
  11. 一招教你解决Rational rose画时序图(Sequence diagram)时找不到参与者(Actor)的尴尬现场
  12. OSChina 周五乱弹 —— 毁人不倦的大师们
  13. django--安装
  14. 文件名字超出计算机无法删除,win7文件名太长无法移动和删除的解决方法
  15. PandoraBox潘多拉多线多播
  16. 类模板与函数模板区别
  17. UE4 AI移动到 出现的BUG以及解决方案
  18. 再次启航,留下每一步脚印
  19. 这里有141个创业公司的死亡案例,看鸡汤不如听教训
  20. python变量与赋值教学视频_Python第一课:print()函数、变量与赋值

热门文章

  1. android apk 微信登入_微信第三方登录(Android 实现)
  2. 编译原理实验:代码生成作业(1)
  3. CCNP 15 交换机3
  4. Gluster集群管理小分析
  5. Android快速SDK(12)文本pdf阅读器PdfViewer【傻瓜模式】
  6. 安装MySQL绿色版本,不用装软件、不用装软件、不用装软件
  7. 高仿拼多多源码/拼单商城系统源码/拼团商城源码
  8. 实现ISA2004的WPAD(自动发现功能)
  9. 收款神器!解读聚合收款码背后的原理
  10. 【转】CCIE一年后的心语