美文网首页
根据二叉树的先序遍历结果输出中序遍历

根据二叉树的先序遍历结果输出中序遍历

作者: 匿名client | 来源:发表于2019-07-07 23:14 被阅读0次

题目描述

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

输入描述:

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

输出描述:

可能有多组测试数据,对于每组数据,
输出将输入字符串建立二叉树后中序遍历的序列,每个字符后面都有一个空格。
每个输出结果占一行。

示例1

输入

abc##de#g#f###

输出

c b e g d f a

#include <iostream>
#include <string>
using namespace std;
 
string str;
int i;
 
struct TreeNode  //树节点
{
    char value; //节点的值
    struct TreeNode *lchild, *rchild;
    TreeNode(char c): value(c), lchild(NULL), rchild(NULL){} //初始化
};
TreeNode* creatTree() //创建树
{
    char c = str[i++];
    if (c == '#') return NULL;
    TreeNode *root = new TreeNode(c);
    root->lchild = creatTree();
    root->rchild = creatTree();
    return root;
}
void inorder(TreeNode* root) //中序遍历
{
    if (!root) return;
    inorder(root->lchild);
    cout << root->value <<" ";
    inorder(root->rchild);
}
void deleteTree(TreeNode* root) //删除构建的树防止内存泄露
{
    if (root->lchild != NULL) 
    {
        deleteTree(root->lchild);
        root->lchild = NULL;
    }
    if (root->rchild != NULL) 
    {
        deleteTree(root->rchild);
        root->rchild = NULL;
    }
    delete(root);
}
int main()
{
    while(cin >> str)
    {
        i = 0;
        TreeNode *root = creatTree();
        inorder(root);
        cout << endl;
        deleteTree(root);
    }
    return 0;
}

相关文章

  • 重建二叉树与寻找下一个节点

    一、重建二叉树 题目:输入某二叉树的先序遍历和中序遍历的结果,请重建二叉树。假如输入的先序遍历和中序遍历的结果都不...

  • 二叉树-遍历算法

    先序遍历 思路:先根节点->左子树->右子树;二叉树如下图: 先序遍历结果:ABDEGCFHI 中序遍历 思路:先...

  • Java 二叉树

    创建一个二叉树对象 build 一个二叉树 遍历 先序遍历 后序遍历 中序遍历 先序遍历的结果为:0 1 3...

  • 二叉树:先序遍历、中序遍历、后序遍历

    数据: 先序遍历输出所有name值: 输出结果图解: 中序遍历输出所有name值: 输出结果图解: 后序遍历打印所...

  • 二叉树

    先序遍历:根左右 BGCEFADH中序遍历:左根右 CGFEBAHD 根据先序遍历结果已知B是根节点再从中序遍历得...

  • 由遍历序列恢复二叉树

    根据二叉树的定义,先序遍历是先访问根节点,然后再先序遍历左子树的,最后先序遍历右子树。因此,先序遍历序列中的第一个...

  • 先序,中序序列 推导后序序列

    Problem Description 输入二叉树的先序遍历序列和中序遍历序列,输出该二叉树的后序遍历序列。 In...

  • LeetCode 力扣 105. 从前序与中序遍历序列构造二叉树

    题目描述(中等难度) 根据二叉树的先序遍历和中序遍历还原二叉树。 解法一 递归 先序遍历的顺序是根节点,左子树,右...

  • 二叉树遍历算法

    二叉树遍历算法有4种,先序、中序、后序和层序遍历 先序遍历:先根、后左、再右中序遍历:先左、后根、再右后序遍历:先...

  • 二叉树的前序遍历、中序遍历、后序遍历、层次遍历

    二叉树的遍历方式主要有:先序遍历、中序遍历、后序遍历、层次遍历。先序、中序、后序其实指的是父节点被访问的次序。若在...

网友评论

      本文标题:根据二叉树的先序遍历结果输出中序遍历

      本文链接:https://www.haomeiwen.com/subject/nslwhctx.html