zoukankan      html  css  js  c++  java
  • PAT A1099 Build A Binary Search Tree (30分)(二叉搜索树中序遍历有序)



    思路
    因为是二叉搜索树,所以树的中序遍历是从小到大排序的一组数
    所以将位子中序遍历保存后,将已经排序过后的数一一对应即可找到位置
    最后再层序遍历输出结点的值即可
    这里使用输出保存树的结点,结点的结构体为值、位置、左右孩子的位置

    #include<cstdio>
    #include<queue>
    #include<algorithm>
    using namespace std;
    const int N = 110;
    struct node{
        int value;
        int left = -1;
        int right = -1;
    }Node[N];
    int n;
    int num[N],layer[N];
    int index = 0;
    void inorder(int root){
        if(root==-1) return;
        inorder(Node[root].left);
        Node[root].value = num[index++];
        inorder(Node[root].right);
        return;
    }
    void layerorder(int root){
        index = 0;
        queue<int> q;
        if(root!=-1) q.push(root);
        while(q.empty()==false){
            int front = q.front();
            q.pop();
            if(Node[front].left!=-1) q.push(Node[front].left);
            if(Node[front].right!=-1) q.push(Node[front].right);
            layer[index++] = Node[front].value;
        }
        return;
    }
    int main(){
        scanf("%d",&n);
        for(int i = 0;i<n;i++){
            int l,r;
            scanf("%d %d",&l,&r);
            Node[i].left = l;
            Node[i].right = r;
        }
        for(int i  = 0;i<n;i++){
            scanf("%d",&num[i]);
        }
        sort(num,num+n);
        inorder(0);
        layerorder(0);
        for(int i = 0;i<n;i++){
            printf("%d",layer[i]);
            if(i!=n-1) printf(" ");
        }
        return 0;
    }
    
  • 相关阅读:
    solr不是标准的java project解决方案
    solr 索引库的维护
    solr linux配置
    JSON跨域问题总结
    阿里云字体图标的引用
    Android 体系结构
    java.lang.NoClassDefFoundError 异常
    java java.uitl.Random产生随机数
    Android 应用间的集成
    iOS7状态栏字体颜色修改
  • 原文地址:https://www.cnblogs.com/shuibeng/p/13657263.html
Copyright © 2011-2022 走看看