1135. Is It A Red-Black Tree (30) 以及我这段时间的想法。。。

这道题考试的时候没理解题意,写完BST,插入数字之后懵逼了一个多小时,最后这次考试只有70分。。。要是知道红黑树的定义感觉也是手到擒来的。。。真的是不学不会不练,实际上红黑树是ECS60 的阅读材料,不过老师说不考,我自然不会去看。。。国内的本科学生都会自学前端,或者搞ACM,或者实验室什么的,我真的没有兴趣,只是厌烦

#include<iostream>
#include<string>
#include<queue>
#include<algorithm>
using namespace std;

const int inf = 99999999;

struct node {
    int val;
    node *left=NULL, *right=NULL;
};

node * root;

void insert(node* &root, int k) {
    if (root == NULL) {
        root = new node;
        root->val = k;
        return;
    }

    if (abs(k) < abs(root->val)) {
        insert(root->left, k);
    }

    else {
        insert(root->right, k);
    }
}

/*void pre(node* root) {
    if (root == NULL) {
        return;
    }

    cout << root->val;

    pre(root->left);
    pre(root->right);
}*/

bool f = 1;

void j1(node *root) {
    if (root->left != NULL) {
        if (root->val < 0 && root->left->val < 0) {
            f = 0;
            return;
        }

        else {
            j1(root->left);
        }
    }

    if (root->right != NULL) {
        if (root->val < 0 && root->right->val < 0) {
            f = 0;
            return;
        }

        else {
            j1(root->right);
        }
    }
}

int j2(node*root) {
    int h1, h2;
    if (f == 0) {
        return 1;
    }
    if (root == NULL) {
        return 1;
    }

    int k = 0;

    if (root->val > 0) {
        k = 1;
    }

    h1 = k + j2(root->left);
    h2 = k + j2(root->right);

    if (h1 != h2) {
        f = 0;
        
    }
    return h1;
    
}

int main() {
    
    int num;
    cin >> num;

    for (int i = 0; i < num; i++) {
        f = 1;
        root = NULL;
        int n;
        cin >> n;
        for (int i = 0; i < n; i++) {
            int temp;
            cin >> temp;
            insert(root, temp);
        }

        if (root->val < 0) {
            cout << "No" << endl;
        }
        else {
            j1(root);
            if (f == 0) {
                cout << "No" << endl;
            }
            else {
                j2(root);
                if (f == 0) {
                    cout << "No" << endl;
                }
                else {
                    cout << "Yes" << endl;
                }
            }
        }
        
    }
    
    system("pause");
}

 

。。。PAT实际上是国内的不学计算机的Z同学问我的一道题目,我才有所了解,后来刷刷题,干脆暑假回国考一个试试。。。

 

时至今日,我还是不太清楚我以后想做什么,就像好几年前,老爹老妈说 XXX的儿子也出国了,XXXX的女儿也出国了,要不你也出国吧。。。然后自己没想明白就考了托福,SAT,来了美帝,现在还在后悔。。。那时候感觉自己随便考考托福105,SAT2260,真是相当的厉害。。。其实我读书真的感觉是在敷衍爹妈,考得好只不过沾了英语基础好的光而已。。。说到底也只是一个会考试的渣渣而已。。。美国的招生官眼光真的很毒,一眼就看出我这种垃圾货色,纷纷不要我,那时候进了现在的学校还挺不开心的,后来想想真的是德不配位 。。。

 

刚来的时候,还学了一整年的经济,混混日子,画画X,很是舒服,后来又是老爹老妈说 计算机是未来发展的方向 CS大法好,才学了计算机。。。我第二年过完暑假,要去美国之前,对编程的概念是0.。。。真的是连 C/C++,Java,Python的单词拼写都不知道。。。然后果然生不如死,好几次都差点放弃了。。。美帝的教学方法可能对自己感兴趣,愿意钻研的人来说很适合,但是对我这种零基础的人,造成毁灭性的打击,信心完全没了。。。我现在对计算机这个学科已经充满了厌烦。。。毫无兴趣,就是对这种技术性的东西没有一点点的求知欲。。。对新出来的各种科技产品也没有一点点兴趣。。。老是在幻想那时候要是留在国内,学个文科之类我更加喜欢的专业会怎么样。。。大概会比现在好很多吧。。。现在就想回国混个事业单位,国有企业,政府机关,或者干脆做外贸什么的都行。。。反正我这垃圾水平也做不了程序员。。。

 

可能我爹妈从小给我提供的条件实在太好,让我在青年时代就享受到了很多我不该享受的,  很多别人很想要的东西我几乎唾手可得。。。然后让我产生了混吃等死,随遇而安的想法,在遇到挫折,特别是一个人在国外的时候这种想法就愈发强烈。。。以后的打算大概就是好好读个研究生,随便什么专业,算是给我学生时代一个交代,给老爹老妈一个交代,也能让我更好的混日子。。。

 

posted on 2017-09-20 13:38  wsggb123  阅读(133)  评论(0)    收藏  举报

导航