PAT A1099

发布时间:2019-06-04 发布网站:脚本宝典
脚本宝典收集整理的这篇文章主要介绍了PAT A1099脚本宝典觉得挺不错的,现在分享给大家,也给大家做个参考。

clipboard.png
和完全二叉排序树那道题类似,采用的方法还是中序遍历空树填节点的方法;
代码如下:

#include<iostream>
#include<stdlib.h>
#include<stdio.h>
#include<vector>
#include<algorithm>
#include<queue>
using namespace std;
using std::vector;
using std::queue;
const int maxn=110;
struct node{
    int data=-1;
    int lchild=-1;
    int rchild=-1;
}Node[maxn];
int n;
vector<int>input;
vector<int>output;
int index=0;
void inorder(int root){
    if(root==-1)
        return;
    inorder(Node[root].lchild);
    Node[root].data=input[index++];
    inorder(Node[root].rchild);
}

void layer(int root){
    queue<int>q;
    q.push(root);
    while(!q.empty()){
        int x=q.front();
        q.pop();
        output.push_back(Node[x].data);
        if(Node[x].lchild!=-1){
            q.push(Node[x].lchild);
        }
        if(Node[x].rchild!=-1){
            q.push(Node[x].rchild);
        }
    }
}

int main(){
    int a,b;
    scanf("%d",&n);
    for(int i=0;i<n;i++){
        scanf("%d%d",&a,&b);
        Node[i].lchild=a;
        Node[i].rchild=b;
    }
    for(int i=0;i<n;i++){
        scanf("%d",&a);
        input.push_back(a);
    }
    sort(input.begin(),input.end());
    inorder(0);
    layer(0);
    for(int i=0;i<n;i++){
        if(i==0)
            printf("%d",output[i]);
        else
            printf(" %d",output[i]);
    }
    system("pause");
    return 0;
}

脚本宝典总结

以上是脚本宝典为你收集整理的PAT A1099全部内容,希望文章能够帮你解决PAT A1099所遇到的问题。

如果觉得脚本宝典网站内容还不错,欢迎将脚本宝典推荐好友。

本图文内容来源于网友网络收集整理提供,作为学习参考使用,版权属于原作者。
如您有任何意见或建议可联系处理。小编QQ:384754419,请注明来意。
标签: