用户注册



邮箱:

密码:

用户登录


邮箱:

密码:
记住登录一个月 忘记密码?

发表随想


还能输入:200字
云代码 - c++代码库

是否完全二叉搜索树

2017-11-24 作者:芙蓉妹妹 举报

[c++]代码库

#include <bits/stdc++.h>
using namespace std;
int n;
struct node
{
    int data;
    int id;
    struct node * left, *right;
};
struct node *creat(struct node *root, int x)
{
    if(!root)
    {
        struct node *t;
        t= new node;
        t->data = x;
        t->left = t->right = NULL;
        return t;
    }
    if(root->data < x)
        root->left = creat(root->left, x);
    else
        root->right = creat(root->right, x);
    return root;

};
void bfs(struct node *root, int f)
{
    queue<node *>q;
    root->id = 1;
    q.push(root);
    int flag = 0;
    while(!q.empty())
    {
        if(flag)
            cout<<" ";
        struct node *now = q.front();
        q.pop();
        flag = 1;
        if(now->id > n)
            f = 1;
        cout<<now->data;
        if(now->left)
        {
            now->left->id = now->id<<1;
            q.push(now->left);
        }
        if(now->right)
        {
            now->right->id = now->id<<1|1;
            q.push(now->right);
        }
    }
    cout<<endl;
    if(f)
        cout<<"NO";
    else
        cout<<"YES";
}
int main()
{
    struct node *root;
    root = new node;
    root = NULL;
    int x, f = 0;
    cin>>n;
    for(int i = 0; i < n; i++)
    {
        cin>>x;
        root = creat(root,x);
    }
    bfs(root,f);
    return 0;
}


分享到:
更多

网友评论    (发表评论)

共1 条评论 1/1页

发表评论:

评论须知:

  • 1、评论每次加2分,每天上限为30;
  • 2、请文明用语,共同创建干净的技术交流环境;
  • 3、若被发现提交非法信息,评论将会被删除,并且给予扣分处理,严重者给予封号处理;
  • 4、请勿发布广告信息或其他无关评论,否则将会删除评论并扣分,严重者给予封号处理。