zoukankan      html  css  js  c++  java
  • [PAT] A1020 Tree Traversals

    【题目】

    distinct    不同的

    postorder   后序的

    inorder    中序的

    sequence    顺序;次序;系列

    traversal     遍历

    题目大意:给出二叉树的后序遍历和中序遍历,求层次遍历。

    【思路】

    方法一:参见《算法笔记》

    方法二:无需建树。参见 https://blog.csdn.net/liuchuo/article/details/52137796 

    【AC代码】

    方法一:

     1 #include<iostream>
     2 #include<queue>
     3 using namespace std;
     4 #define N 32
     5 struct node {
     6     int data;
     7     node *lchild, *rchild;
     8 };
     9 int in[N], post[N];
    10 int n;
    11 node* tree(int postleft, int postright, int inleft, int inright)
    12 {
    13     if (postleft > postright || inleft > inright)
    14     {
    15         return NULL;
    16     }
    17     node* root = new node;
    18     root->data = post[postright];
    19     int i, k;
    20     for (i = inleft; i <= inright; i++)
    21         if (in[i] == post[postright])
    22             break;
    23     k = i - inleft;
    24     root->lchild = tree(postleft, postleft + k - 1, inleft, i - 1);
    25     root->rchild = tree(postleft + k, postright - 1, i + 1, inright);
    26     return root;
    27 }
    28 void level(node* root)
    29 {
    30     int output = 0;//记录输出了多少个数,因为最后一个数输出之后没有空格。
    31     queue<node*>q;
    32     q.push(root);
    33     while (!q.empty())
    34     {
    35         node* tnode = q.front();
    36         q.pop();
    37         cout << tnode->data;
    38         output++;
    39         if (output < n)
    40             cout << " ";
    41         if (tnode->lchild != NULL)q.push(tnode->lchild);
    42         if (tnode->rchild != NULL)q.push(tnode->rchild);
    43     }
    44 }
    45 int main()
    46 {
    47     cin >> n;
    48     int i;
    49     for (i = 0; i < n; i++)
    50         cin >> post[i];
    51     for (i = 0; i < n; i++)
    52         cin >> in[i];
    53     node* root = tree(0, n - 1, 0, n - 1);
    54     level(root);
    55     return 0;
    56 }
  • 相关阅读:
    Android Service 与 Activity使用Pending Intent通信
    Android四大组件之Service(一)
    Android中的进程和线程
    Java虚拟机结构(二)
    Java虚拟机结构(一)
    Android四大组件之Activity(一)
    一阶规则学习
    规则学习
    算法链接
    41. First Missing Positive
  • 原文地址:https://www.cnblogs.com/yue36/p/12319378.html
Copyright © 2011-2022 走看看