zoukankan      html  css  js  c++  java
  • [二叉树建树] 根据前序遍历构造二叉树

    题目描述

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

    输入

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

    输出

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

    样例输入

    a#b#cdef#####a##

    样例输出

    a b f e d c
    注:每个字母后面跟着一个空格。
     
    分析:与二叉树复原进行对比,是两种不同的构建二叉树的方法。
     
    #include <iostream>
    #include <cstdio>
    #include <cmath>
    #include <cstring>
    #include <algorithm>
    #include <vector>
    using namespace std;
    
    string input;
    
    struct node
    {
        char data;
        node * lchild,*rchild;
    };
    
    void preOrder(node * & root,int & index)
    {
        if(index>=input.length())
        {
            return ;
        }
        if(input[index]=='#')
        {
            root=NULL;
            index++;
        }
        else
        {
            root=new node;
            root->data=input[index];
            index++;
            preOrder(root->lchild,index);
            preOrder(root->rchild,index);
            
        }
    }
    
    void inOrder(node * root)
    {
        if(root==NULL)
        {
            return ;
        }
        inOrder(root->lchild);
        cout<<root->data<<" ";
        inOrder(root->rchild);
    }
    
    int main()
    {
        while(cin>>input)
        {
            node * root=NULL;
            int index=0;
            preOrder(root,index);
            inOrder(root);
            cout<<endl;
        }
    }
     
     
     
     
  • 相关阅读:
    Educational Codeforces Round 86 (Rated for Div. 2)
    第十六届东南大学大学生程序设计竞赛(春、夏季)
    Codeforces Round #643 (Div. 2)
    [P3384] 【模板】轻重链剖分
    [BJOI2012] 连连看
    [CF1349C] Orac and Game of Life
    Codeforces Round #641 (Div. 2)
    [TJOI2018] 数学计算
    [CF1157D] N Problems During K Days
    [CF1163C1] Power Transmission (Easy Edition)
  • 原文地址:https://www.cnblogs.com/xiongmao-cpp/p/6430108.html
Copyright © 2011-2022 走看看