码迷,mamicode.com
首页 > 其他好文 > 详细

1099 Build A Binary Search Tree [二叉搜索树/中序、层次遍历]

时间:2019-09-01 22:05:56      阅读:83      评论:0      收藏:0      [点我收藏+]

标签:技术   its   close   ide   oid   ++   bfs   src   eve   

先用中序确定节点的值,再用层次遍历输出即可。

写的时候思维江化,一开始用指针建树。。。

技术图片
#include <bits/stdc++.h>
using namespace std;
#define maxn 105

struct Node
{
    int index,left,right;
}node[maxn];
int n,a[maxn],tree[maxn];
vector<int> ve[maxn],in,post;
void inorder(int p)
{
    if(node[p].left!=-1)
        inorder(node[p].left);
    in.push_back(node[p].index);
    if(node[p].right!=-1)
        inorder(node[p].right);
}
void bfs()
{
    cout<<tree[0];
    queue<int> q;
    q.push(0);
    while(!q.empty())
    {
        int t=q.front();
        q.pop();
        if(t>0)
            cout<<" "<<tree[t];
        if(node[t].left!=-1)
            q.push(node[t].left);
        if(node[t].right!=-1)
            q.push(node[t].right);
    }
    cout<<endl;
}
int main()
{
    int l,r;
    cin>>n;
    for(int i=0;i<n;i++)
    {
        cin>>l>>r;
        node[i].index=i;
        node[i].left=l;
        node[i].right=r;
    }
    for(int i=0;i<n;i++)
        cin>>a[i];
    sort(a,a+n);
    inorder(0);
    for(int i=0;i<n;i++)
        tree[in[i]]=a[i];
    bfs();
    return 0;
}
View Code

 

1099 Build A Binary Search Tree [二叉搜索树/中序、层次遍历]

标签:技术   its   close   ide   oid   ++   bfs   src   eve   

原文地址:https://www.cnblogs.com/FTA-Macro/p/11443516.html

(0)
(0)
   
举报
评论 一句话评论(0
登录后才能评论!
© 2014 mamicode.com 版权所有  联系我们:gaon5@hotmail.com
迷上了代码!