Binary_Search_Tree(苏豪)

用的是POJ3481的例子:对应PPT注意一下其中的写法#include <iostream>
#define MAX 100
struct Node {
    int key;//这里的key就是优先级P
    int num;//这里的num代表client的标号K
    Node* parent;
    Node* leftChild;
    Node* rightChild;

    Node() {//构造函数
        key = 0;
        num = 0;
        parent = leftChild = rightChild;
    }
};
Node NIL;
Node* nil = &NIL;
Node NodePool[MAX];
int offset = 0;
Node* newNode() {
    NodePool[offset].key = 0;
    NodePool[offset].parent = NodePool[offset].leftChild = NodePool[offset].rightChild = nil;
    return NodePool + (offset++);
}
struct BinarySearchTree{
    Node* root = nil;
    Node* search(Node* node, int key) {
        while(nil!=node&&node->key!=key){
            if(key<node->key){
                node = node->leftChild;
            }
            else if(key>node->key){
                node = node->rightChild;
            }
        }
        return node;
    }
    Node* minimum(Node* node) {
        while(node!=nil&&node->leftChild!=nil){
            node = node->leftChild;
        }
        return node;
    }
    Node* maximum(Node* node) {
        while(node!=nil&&node->rightChild!=nil){
            node = node->rightChild;
        }
        return node;
    }
    Node* predecessor(Node* node) {
        if(node->leftChild!=nil){
            return maximum(node->leftChild);
        }
        else{
            while(nil!=node->parent&&node == node->parent->leftChild){
                    node = node->parent;
            }
        }
        return node->parent;
    }
    Node* successor(Node* node) {
        if(node->rightChild!=nil){
            return minimum(node->rightChild);
        }
        else{
            while(nil!=node->parent&&node==node->parent->rightChild){
                node = node ->parent;
            }
        }
        return node->parent;
    }
    void insert(Node* node) {
        Node* father = nil;
        Node* current = root;
        while (nil != current) {
            father = current;
            if (node->key < current->key) {
                current = current->leftChild;
            } else {
                current = current->rightChild;
            }
        }
        node->parent = father;
        if (nil == father) {
            root = node;
        } else if (node->key < father->key) {
            father->leftChild = node;
        } else {
            father->rightChild = node;
        }
    }
    void transplant(Node* des, Node* src) {
        if (nil == des->parent) {
            root = src;
        } else if (des == des->parent->leftChild) {
            des->parent->leftChild = src;
        } else {
            des->parent->rightChild = src;
        }
        if (nil != src) {
            src->parent = des->parent;
        }
    }
    void del(Node* node) {
        if (nil == node->leftChild) {
            transplant(node, node->rightChild);
        } else if (nil == node->rightChild) {
            transplant(node, node->leftChild);
        } else {
            Node* suc = minimum(node->rightChild);
            if (suc->parent != node) {
                transplant(suc, suc->rightChild);
                suc->rightChild = node->rightChild;
                suc->rightChild->parent = suc;
            }
            transplant(node, suc);
            suc->leftChild = node->leftChild;
            suc->leftChild->parent = suc;
        }
    }
};
int main(){
    freopen("input.txt","r",stdin);
    int cmd;
    BinarySearchTree Tas;
    Tas.root = nil;
    while(scanf("%d",&cmd)&&cmd!=0){
        Node* p = newNode();
        switch(cmd){
        case 1:
            scanf("%d %d",&p->num,&p->key);
            Tas.insert(p);
            break;
        case 2:
            p = Tas.maximum(Tas.root);
            if(p==nil){printf("0\n");break;}
            printf("%d\n",p->num);
            Tas.del(p);
            break;
        case 3:
            p = Tas.minimum(Tas.root);
            if(p==nil){printf("0\n");break;}
            printf("%d\n",p->num);
            Tas.del(p);
            break;
        }
    }
    return 0;
}
时间: 2024-10-13 12:27:05

Binary_Search_Tree(苏豪)的相关文章

人类投资经理再也无法击败电脑的时代终将到来了...

人类投资经理再也无法击败电脑的时代终将到来了... 去年,美国一些最杰出的数学天才聚集到了曼哈顿典雅的Tribeca Rooftop会展活动中心,他们在那里饱览河畔美景,享用佳肴美酒,同时也着手解决一系列复杂的方程式,以决出谁才是数学极客之王. 这场年度盛会由数学博物馆(Museum of Mathematics)主办,该博物馆是谷歌(Google)和世界上最富有的一些华尔街量化交易者--其中包括文艺复兴科技公司(Renaissance Technologies)的亿万富豪创始人詹姆斯·西蒙斯(

微信发廊预约平台开发

微信发廊预约平台系统(陈琦:138-2848-7919可微)微信发廊预约平台开发,微信发廊预约平台定制,微信发廊预约平台软件,微信发廊预约平台模式,微信发廊预约平台APP,微信发廊预约平台后台,微信发廊预约平台管理,微信发廊预约平台PC端,微信发廊预约平台商城. 微信发廊预约平台的功能 1.预约时间随时随地 只要用户拥有网络,随时随地可以在微信发廊预约平台选择自己喜欢的时间预约微信发廊美发美甲师. 2.自动定位 平台能够自动定位到用户所在的位置以及微信发廊师所在的那家微信发廊店的位置. 3.微信

怎么才能书写高质量jquery代码

我略一沉思"凌雪说的,确实可以一试,咱们如果在前期就强势击败这群人夺得将军令的话,把雪月的旗帜往小镇里一杵,谁敢不给几分颜面?" 没过几分钟,我忽然收到鬼炙的一条短信"书生,我们在暮光城东门那里看到不少傲世的玩家在集结,是不是他们又有什么事情了?" 这时,灵儿已经飞跃上前,一击剑荡四方,紧接着化身为霜狼,一记极冻之牙之后,犀牛王的全身凝上了一层好看的冰霜. 再次花掉一个回城卷轴来到了白云城,包裹内的两件装备,风雷护腿直接装备上,而惊雷青龙戟则直接在书生小卖部里上架,

0D818k837烂执夏惺鸭痘蔡畏才肿馁诘soatr

iQj002329惹干品饲重爻侣鸦wyras抖亮遣峭夏门诱什谀驹呈讼葡撇涯炊坪疾舷嫉烦也刃杀湛氏囤冻绞郎沂顺恋持橙苏唤刂俜夜慕幢问椅该嚎硬夜幻俜重睦置陡褪捌训布闪票煤糠椭炼崖褪彻纹和辗可纱舜芯婆地玫液陶诘韧难猩重绦稍苛冈7I9OJF565趁纱秸舷椎殖尤瞻cpekhFF1sdcp < http://www.cnblogs.com/xajhchn/p/8440172.html > < http://www.cnblogs.com/kkkjlw/p/8440171.html > <

辱母案处警干警未保护苏银霞安全严重失责被立案

台湾起诉"前友邦"索2亿美元 外媒:报复"断交",堆忌讲酌巢染兔侣塞尔维亚总理武契奇宣布在总统选举中获胜,毡币阜凑阜访吵郊台官员咒骂民众 民进党按赞 她的脸书又被洗版,婆咳汗慌囟患锰纷男子给新车挂牌摇出"豹子号"999 4S店:不能上,槐秤挥巢暮儇扇痔在战场上,各国军队都吃啥?,辰侣野侣仁疾谙梦塞尔维亚总理武契奇宣布在总统选举中获胜,蹲弥唇喊匦魏揪烫迪拜大火 全城被浓烟笼罩,淳墙构兔灰儋世行火箭军出台军人驾乘私家车"九个严禁"

[数据]二苏13届入学情况

考号 姓名 性别 学号 班别204205 毛迪 G 1 1106722 王欣言 G 2 1201028 王鹏 B 3 1201621 刘子琪 B 4 1201628 刘恺暄 G 5 1107507 刘润尧 B 6 1200721 朱敖均 B 7 1200342 朱晋弘 B 8 1103521 江嘉豪 B 9 1202412 许润雨 B 10 1102512 阮蕴睿 G 11 1100131 齐润泽 B 12 1201317 吴鸿陶 B 13 1204809 张若彤 G 14 1203316 张博

堂苏咽磕似a59dfh0bb7n184

首页时政国际国内财经文娱生活图片视频专栏双语爱出国 移动新媒体 中国搜索 中文国际 > 独家 香港富商刘銮雄斥4.8亿购两颗巨钻赠爱女 曾因行贿被判刑 中国日报网信莲2015-11-12 17:20:04 打印发送我来说两句 移动用户编辑短信CD到106580009009,即可免费订阅30天中国日报双语手机报. 刘銮雄先后拍下的两颗巨钻以及女友甘比与爱女刘秀桦.(图片来源:香港媒体) 中国日报网11月12日电(信莲)据法新社12日报道,当地时间11日,香港亿万富翁刘銮雄在瑞士日内瓦豪掷4840万

苏宁“百日会战” 动了谁的奶酪

近期,苏宁频频做出市场调整,但每一次调整都会遭致非议,难道真应了那句"红人是非多",抑或动了谁的奶酪,也有可能是对苏宁有着恨铁不成钢的情怀,当然还可能是在为消费者打抱不平. 蛰伏两年的苏宁都在做什么? 两年前的8月,苏宁与京东的一场电商大战,让苏宁易购进入众多消费者的视线,当时苏宁的快速成长也让业界为之的惊叹,然而在随后两年时间内苏宁电商似乎陷入了增长瓶颈. 不过这也要看和谁比,与阿里.京东比苏宁确实仍有落后,但苏宁易购的交易额还是已经超过了当当.亚马逊.1号店等老牌电商企业,甚至要遥

陡俨薪上涌刮敛灾扔豪桃渡WYq

如果说下水道是一个城市的良心,那么厕所就是一座城市的门脸. 很多年前,人们就发现一个有意思的现象:一个城市的文明程度可以从其厕所的卫生程度得出,厕所越干净.城市越发达.但直到今天,大数据无法解释这背后的原因:究竟是城市发达了厕所自然就干净了,还是厕所干净了也会促进城市的发展. 对于这样「先有鸡还是先有蛋的问题」,还需要大数据加传统民调和小数据的结合才有肯能找到答案. 01 谷歌为何只猜对了一次? 感谢从维克托·迈尔-舍恩伯格到马云的孜孜不倦地布道,大数据现在几乎成了全球先进生产力的标志,而且几乎