zoukankan      html  css  js  c++  java
  • PAT1020

    二叉树构建以及层次遍历

    注意对递归边界的把握

    之前的博客有错误,改正一下:

    T->lchild = createBiTree(pos, in, index);
    T->rchild = createBiTree(pos+index, in+index+1, len-index-1);

    https://www.cnblogs.com/JCcodeblgos/p/11401423.html

     1 #include <iostream>
     2 #include <queue>
     3 
     4 using namespace std;
     5 
     6 const int maxn = 30+5;
     7 string post_order[maxn], in_order[maxn], ans[maxn];
     8 
     9 typedef struct BiTNode
    10 {
    11     string data;
    12     struct BiTNode *lchild, *rchild;
    13 }BiTNode, *BiTree;
    14 
    15 BiTree createBiTree(string *pos, string *in, int len){
    16     // cout << pos << " " << in << " " << len << endl;
    17     if(len == 0)
    18         return NULL;
    19     
    20     string root = pos[len-1];
    21     int index = 0;
    22     while (in[index]!=root)
    23     {
    24         index++;
    25     }
    26     // cout << index << endl;
    27     BiTree T = new BiTNode;
    28     T->data = root;
    29     T->lchild = createBiTree(pos, in, index);
    30     T->rchild = createBiTree(pos+index, in+index+1, len-index-1);
    31     return T;
    32 }
    33 
    34 void leveltraverse(BiTree T){
    35     BiTree p;
    36     queue<BiTree> Q;
    37     Q.push(T);
    38     int index = 0;
    39     while (!Q.empty())
    40     {
    41         p = Q.front();
    42         Q.pop();
    43         ans[index++] =  p->data;
    44         if(p->lchild)
    45             Q.push(p->lchild);
    46         if(p->rchild)
    47             Q.push(p->rchild);
    48     }
    49 }
    50 
    51 int main(){
    52     // freopen("test.txt", "r", stdin);
    53     int n;
    54     cin >> n;
    55     for(int i=0; i<n; i++)
    56         cin >> post_order[i];
    57     for(int i=0; i<n; i++)
    58         cin >> in_order[i];
    59 //    for(int i=0; i<n; i++)
    60 //        cout << post_order[i] << " ";
    61 //    cout << endl;
    62 //    for(int i=0; i<n; i++)
    63 //        cout << in_order[i] << " ";
    64 //    cout << endl;
    65     BiTree T = createBiTree(post_order, in_order, n);
    66     leveltraverse(T);
    67     for(int i=0; i<n; i++){
    68         if(i != 0)
    69             cout << " ";
    70         cout << ans[i];
    71     }
    72 }
  • 相关阅读:
    controller传到页面的值出现乱码
    Uncaught SyntaxError: Unexpected identifier
    No mapping found for HTTP request with URI xxx/resources/js/jquery.min.js...
    jQuery,Ajax和json
    idea中tomcat启动但是访问不了localhost:8080页面
    不允许有匹配 "[xX][mM][lL]" 的处理指令目标。
    11.流程控制之if判断
    10.可变,不可变数据类型
    Python基础
    文件处理
  • 原文地址:https://www.cnblogs.com/JCcodeblgos/p/11419941.html
Copyright © 2011-2022 走看看