根据先序遍历建立一个二叉树
编一个程序,读入用户输入的一串先序遍历字符串,根据此字符串建立一个二叉树(以指针方式存储)。
例如如下的先序遍历字符串: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;
}
根据先序遍历建立一个二叉树相关推荐
- 【算法学习笔记】二叉树的基本操作实现和应用举例,根据先序与中序遍历建立二叉树的实现
基本操作 给某结点插入一个左孩子 删除二叉树中某结点的左子树 根据先序与中序遍历建立二叉树 应用举例 查找数据元素 二叉链表存储结构 统计叶结点的数目 基本操作 通常有:建立空二叉树.生成以X为根节点 ...
- [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 ...
- LeetCode 105. Construct Binary Tree from Preorder and Inorder Traversal 由前序和中序遍历建立二叉树 C++...
LeetCode 105. Construct Binary Tree from Preorder and Inorder Traversal 由前序和中序遍历建立二叉树 C++ Given preo ...
- 根据二叉树的先序遍历和中序遍历建立二叉树
根据二叉树的先序遍历和中序遍历建立二叉树 rebacktree 根据二叉树的先序遍历和中序遍历建立二叉树. rebacktree1 根据二叉树的后序序遍历和中序遍历建立二叉树. #include &q ...
- 72.编辑距离105.前序中序遍历序列构造二叉树151.翻转字符串里的单词104.二叉树的最大深度76.最小覆盖子串110.平衡二叉树31.下一个排列
72.编辑距离 给你两个单词 word1 和 word2, 请返回将 word1 转换成 word2 所使用的最少操作数 .你可以对一个单词进行如下三种操作:插入一个字符,删除一个字符,替换一个字符. ...
- 由序列确定二叉树:前序序列和中序序列构造二叉树 后序序列和中序序列构造二叉树 层次遍历序列和中序遍历序列构造二叉树 代码实现(c语言)
下面三种序列可以唯一的构造唯一的一棵二叉树: 前序序列和中序序列构造二叉树 后序序列和中序序列构造二叉树 层次遍历序列和中序遍历序列构造二叉树 #include<stdio.h> #inc ...
- #swust oj971 和972统计利用先序遍历创建的二叉树的深度和宽度
971: 统计利用先序遍历创建的二叉树的深度 思路: 1.先序递归遍历创建二叉树 2.当接收的数据是字符"#"时表示该结点不需要创建,否则创建该结点 3.最后后序遍历算法统计二叉树 ...
- 【必拿下系列】106. 从中序与后序遍历序列构造二叉树105从前序与中序遍历序列构造二叉树
两题各自的链接放这里了: 链接: 106 链接: 105 106.从中序与后序遍历序列构造二叉树 如果你是不知道理论的,那就得仔细分析了, 举个例子: 输入:inorder = [9,3,15,20, ...
- 72 中序遍历和后序遍历树构造二叉树
原题网址:https://www.lintcode.com/problem/construct-binary-tree-from-inorder-and-postorder-traversal/des ...
最新文章
- mysql命令行各个参数解释
- python上机实验报告读取文件_Python程序设计实验报告八 : 文件
- rhel5下samba的配置
- 异星工厂 自动机器人_插件机机器人能够实现工厂自动化
- 知乎大V推荐!面试官6个灵魂拷问,原理+实战+视频+源码
- Simulink之功率场效应晶体管(P-MOSFET)
- 戴志坚接替李小加出任职港交所行政总裁 基本年薪700万港元
- 引入对抗训练的对比学习
- 诺基亚成功转型:引领新一代5G技术 布局物联网
- java.sql包是jdbc_sqljdbc4.jar官方下载|
- 一招教你解决Rational rose画时序图(Sequence diagram)时找不到参与者(Actor)的尴尬现场
- OSChina 周五乱弹 —— 毁人不倦的大师们
- django--安装
- 文件名字超出计算机无法删除,win7文件名太长无法移动和删除的解决方法
- PandoraBox潘多拉多线多播
- 类模板与函数模板区别
- UE4 AI移动到 出现的BUG以及解决方案
- 再次启航,留下每一步脚印
- 这里有141个创业公司的死亡案例,看鸡汤不如听教训
- python变量与赋值教学视频_Python第一课:print()函数、变量与赋值