zoukankan      html  css  js  c++  java
  • 1086 Tree Traversals Again (25 分)(二叉树的遍历)

    用栈来模拟一棵二叉树的先序遍历和中序遍历过程,求这棵二叉树的后序遍历

    由题棵知道:push是先序遍历

                          pop是中序遍历

    #include<bits/stdc++.h>
    
    using namespace std;
    vector<int>pre;
    vector<int>in;
    vector<int>vec;
    const int N=50;
    int pre1[N];
    int in1[N];
    void print(int l1,int r1,int l2,int r2)
    {
        if(l1>r1||l2>r2) return;
        int mid=l2;
        while(in[mid]!=pre[l1]) mid++;
        print(l1+1,l1+mid-l2,l2,mid-1);
        print(l1+mid-l2+1,r1,mid+1,r2);
        vec.push_back(pre[l1]);
    }
    int main()
    {
        int n;
        scanf("%d",&n);
        stack<int>st;
        for(int i=0;i<2*n;i++){
            char s[20];
            scanf("%s",s);
            if(strcmp(s,"Push")==0){
                int num;
                scanf("%d",&num);
                st.push(num);
                pre.push_back(num);
            }
            else{
                int t=st.top();
                st.pop();
                in.push_back(t);
            }
        }
    
        print(0,n-1,0,n-1);
        for(int i=0;i<vec.size();i++){
            if(i) printf(" ");
            printf("%d",vec[i]);
        }
        printf("
    ");
        return 0;
    }
  • 相关阅读:
    Hive的架构和工作流程
    Hive的定义及搭建
    HBase API操作
    HBase相关概念简介
    HBase shell常用命令
    HBase的简介和搭建
    scrapy useragent
    scrapy settings
    scrapy中的request对象
    python语法
  • 原文地址:https://www.cnblogs.com/chenchen-12/p/10084991.html
Copyright © 2011-2022 走看看