• PAT A1135 Is It A Red Black Tree


    判断一棵树是否是红黑树,按题给条件建树,dfs判断即可~

    #include<bits/stdc++.h>
    using namespace std;
    const int maxn=1010;
    struct node {
        int data;
        node * left=NULL;
        node * right=NULL;
    };
    void insert (node * &root,int x) {
        if (root==NULL) {
            root=new node;
            root->data=x;
            return;    
        }
        if (abs(x)<abs(root->data)) insert (root->left,x);
        else insert (root->right,x);
    }
    int getnum (node * root) {
        if (root==NULL) return 1;
        if (root->data>0)
        return max(getnum(root->left),getnum(root->right))+1;
        else return max(getnum(root->left),getnum(root->right));
    }
    int flag=0;
    void dfs (node * root) {
        if (root==NULL) return;
        if (root->data<0&&root->left&&root->left->data<0) flag++;
        if (root->data<0&&root->right&&root->right->data<0) flag++;
        if (getnum(root->left)!=getnum(root->right)) flag++;
        dfs (root->left);
        dfs (root->right);
    }
    int main () {
        int T;
        scanf ("%d",&T);
        int N,x;
        while (T--) {
            node * root=NULL;
            scanf ("%d",&N);
            for (int i=0;i<N;i++) {
                scanf ("%d",&x);
                insert (root,x);
            }
            flag=0;
            if (root->data<0) flag++;
            dfs (root);
            if (flag==0) printf ("Yes
    ");
            else printf ("No
    ");
        }
        return 0;
    }
  • 相关阅读:
    CSP-S2019 括号树
    [CQOI2007]余数求和
    CF1000E We Need More Bosses
    [HAOI2009]毛毛虫
    ls命令
    HTML的标签 属性 等等
    虚拟机安装Tools
    1.1 什么是安全渗透
    004-Kali Linux安装-熟悉环境
    003-Kali Linux 安装-持久加密USB安装、熟悉环境、熟悉BASH命令
  • 原文地址:https://www.cnblogs.com/zhanglichen/p/12301701.html
Copyright © 2020-2023  润新知