亚洲欧美第一页_禁久久精品乱码_粉嫩av一区二区三区免费野_久草精品视频

? 歡迎來到蟲蟲下載站! | ?? 資源下載 ?? 資源專輯 ?? 關于我們
? 蟲蟲下載站

?? avltree.h

?? C++編成數據結構與程序設計方法 D.S.Malk編著
?? H
字號:

//This file contains the definitions of the AVL tree functions
//discussed in the book.

   //Definition of the node
template<class elemType>
struct AVLNode
{
    elemType info;
    int	bfactor; // balance factor
    AVLNode<elemType> *lLink;
    AVLNode<elemType> *rLink;
};


template<class elemType>
void rotateToLeft(AVLNode<elemType>* &root)
{
    AVLNode<elemType> *p;   //pointer to the root of the
                            //right subtree of root
    if (root == NULL)
        cout << "Error in the tree" << endl;
    else if(root->rLink == NULL)
        cout << "Error in the tree:"
             << " No right subtree to rotate." << endl;
    else
    {
        p = root->rLink;
        root->rLink = p->lLink; //the left subtree of p 
                           //becomes the right subtree of root
        p->lLink = root; 
        root = p;	//make p the new root node
    }
}//rotateLeft

template<class elemType>
void rotateToRight(AVLNode<elemType>* &root)
{
    AVLNode<elemType> *p;  //pointer to the root of	
                            //the left subtree of root

    if (root == NULL)
        cout << "Error in the tree" << endl;
    else if(root->lLink == NULL)
        cout << "Error in the tree:"
             << " No left subtree to rotate." << endl;
    else
    {
        p = root->lLink;
        root->lLink = p->rLink; //the right subtree of p 
                          //becomes the left subtree of root
        p->rLink = root; 
        root = p;	//make p the new root node
    }
}//end rotateRight

template<class elemType>
void balanceFromLeft(AVLNode<elemType>* &root)
{
    AVLNode<elemType> *p;
    AVLNode<elemType> *w;

    p = root->lLink;   //p points to the left subtree of root

    switch (p->bfactor)
    {
    case -1: 
        root->bfactor = 0;
        p->bfactor = 0;
        rotateToRight(root);
        break;
    case 0:  
        cout << "Error: Cannot balance from the left." << endl;
        break;
    case 1:  
        w = p->rLink;
        switch (w->bfactor)  //adjust the balance factors
        {
        case -1: 
            root->bfactor = 1;
            p->bfactor = 0;
            break;
        case 0:  
            root->bfactor = 0;
            p->bfactor = 0;
            break; 
        case 1:  
            root->bfactor = 0;
            p->bfactor = -1;
        }//end switch

        w->bfactor = 0;	
        rotateToLeft(p);
        root->lLink = p;
        rotateToRight(root);
    }//end switch;
}//end balanceFromLeft


template<class elemType>
void balanceFromRight(AVLNode<elemType>* &root)
{
    AVLNode<elemType> *p;
    AVLNode<elemType> *w;

    p = root->rLink;   //p points to the left subtree of root

    switch (p->bfactor)
    {
    case -1: 
        w = p->lLink;
        switch (w->bfactor)  //adjust the balance factors
        {
        case -1: 
            root->bfactor = 0;
            p->bfactor = 1;
            break;
        case 0:  
            root->bfactor = 0;
            p->bfactor = 0;
            break;		
        case 1:  
            root->bfactor = -1;
            p->bfactor = 0;
        }//end switch

        w->bfactor = 0;	
        rotateToRight(p);
        root->rLink = p;
        rotateToLeft(root);
        break;
    case 0:  
        cout << "Error: Cannot balance from the left." << endl;
        break;
    case 1:  
        root->bfactor = 0;
        p->bfactor = 0;
        rotateToLeft(root);
    }//end switch;
}//end balanceFromRight


template <class elemType>
void insertIntoAVL(AVLNode<elemType>* &root,
                   AVLNode<elemType>  *newNode, 
                   bool& isTaller)
{
    if (root == NULL)
    {
        root = newNode;
        isTaller = true;
    }
    else if(root->info == newNode->info)
        cout << "No duplicates are allowed." << endl;
    else if(root->info > newNode->info) //newItem goes in 
                                        //the left subtree
    {
        insertIntoAVL(root->lLink, newNode, isTaller);

        if (isTaller)   //after insertion, the subtree grew 
                        //in height
            switch (root->bfactor)
            {
            case -1: 
                balanceFromLeft(root);
                isTaller = false;
                break;
            case 0:  
                root->bfactor = -1;
                isTaller = true;
                break;
            case 1:  
                root->bfactor = 0;
                isTaller = false;
            }//end switch
    }//end if
    else
    {
        insertIntoAVL(root->rLink, newNode, isTaller);

        if (isTaller)    //after insertion, the 
                        //subtree grew in height
        switch (root->bfactor)
        {
        case -1: 
            root->bfactor = 0;
            isTaller = false;
            break;
        case 0:  
            root->bfactor = 1;
            isTaller = true;
            break;
        case 1:  
            balanceFromRight(root);
            isTaller = false;
        }//end switch
    }//end else
}//insertIntoAVL

template <class elemType>
void insert(const elemType &newItem)
{
    bool isTaller = false;
    AVLNode<elemType>  *newNode;

    newNode = new AVLNode<elemType>;
    newNode->info = newItem;
    newNode->bfactor = 0;
    newNode->lLink = NULL;
    newNode->rLink = NULL;

    insertIntoAVL(root, newNode, isTaller);
}

?? 快捷鍵說明

復制代碼 Ctrl + C
搜索代碼 Ctrl + F
全屏模式 F11
切換主題 Ctrl + Shift + D
顯示快捷鍵 ?
增大字號 Ctrl + =
減小字號 Ctrl + -
亚洲欧美第一页_禁久久精品乱码_粉嫩av一区二区三区免费野_久草精品视频
久久99精品国产麻豆婷婷| 不卡欧美aaaaa| 久久久蜜桃精品| 欧美日韩一卡二卡三卡| 成人蜜臀av电影| 国产综合色在线| 日本在线播放一区二区三区| 亚洲婷婷国产精品电影人久久| 在线电影国产精品| 精品视频在线看| 91麻豆精品视频| 丰满少妇久久久久久久| 激情都市一区二区| 精品中文字幕一区二区小辣椒| 一区二区三区美女| 亚洲黄色录像片| 亚洲影院理伦片| 亚洲一区二区精品视频| 亚洲欧美日韩中文播放| 亚洲欧洲av色图| 国产精品久久久久天堂| 中文字幕一区二区三区四区| 国产欧美日韩精品一区| 一区视频在线播放| 一区二区三区在线观看欧美| 亚洲美女视频在线观看| 一区二区高清在线| 亚洲小说春色综合另类电影| 日韩成人一级大片| 美国三级日本三级久久99| 久久 天天综合| 懂色中文一区二区在线播放| 99国产精品一区| 欧美一区二区三区在线视频| 精品毛片乱码1区2区3区| 国产网站一区二区| 亚洲男人的天堂在线aⅴ视频| 洋洋av久久久久久久一区| 日韩成人一级大片| 成人久久18免费网站麻豆| 在线一区二区视频| 日韩一区二区三区免费观看| 久久精品欧美一区二区三区不卡 | 亚洲在线成人精品| 久久av中文字幕片| 91原创在线视频| 欧美一级黄色片| 亚洲精品国产一区二区三区四区在线 | 精品噜噜噜噜久久久久久久久试看 | 欧美日韩国产高清一区二区三区| 欧美tk—视频vk| 亚洲精品国产成人久久av盗摄| 久久99国产精品免费| 欧美自拍偷拍午夜视频| 国产精品久久久久久妇女6080| 免费看欧美美女黄的网站| 色欧美88888久久久久久影院| 日韩视频国产视频| 亚洲精品日韩综合观看成人91| 欧美a一区二区| 91久久精品日日躁夜夜躁欧美| 国产精品区一区二区三| 日本成人在线看| 欧美三区在线视频| 18成人在线观看| 成人精品亚洲人成在线| 精品国产免费人成电影在线观看四季| 日韩欧美国产麻豆| 五月激情六月综合| 欧美在线观看视频一区二区三区| 国产女同互慰高潮91漫画| 奇米色一区二区三区四区| 在线观看三级视频欧美| 中文字幕一区二区不卡| 亚洲一卡二卡三卡四卡无卡久久| 大白屁股一区二区视频| 久久久精品免费免费| 久久国产麻豆精品| 亚洲精品一区二区三区影院| 日本欧美一区二区在线观看| 日韩欧美色综合网站| 日本不卡一二三区黄网| 日韩一区二区麻豆国产| 麻豆成人久久精品二区三区小说| 4438x亚洲最大成人网| 日本最新不卡在线| 精品国产1区2区3区| 国产成人在线视频免费播放| 国产亚洲一区二区在线观看| av欧美精品.com| 亚洲一区二区三区四区不卡| 欧美视频在线观看一区| 久久激情五月婷婷| 欧美国产一区二区在线观看| voyeur盗摄精品| 亚洲图片激情小说| 日韩精品一区在线观看| 成人免费毛片app| 亚洲123区在线观看| 国产婷婷一区二区| 91视频精品在这里| 亚洲.国产.中文慕字在线| 国产日韩精品久久久| 91亚洲精品一区二区乱码| 天天操天天干天天综合网| 精品国一区二区三区| 色婷婷久久久久swag精品| 亚洲成人av一区| 亚洲青青青在线视频| 久久影院午夜片一区| 91九色最新地址| 成人白浆超碰人人人人| 久久国产精品99久久人人澡| 亚洲欧洲精品成人久久奇米网| 精品动漫一区二区三区在线观看| 97精品国产97久久久久久久久久久久| 日韩在线播放一区二区| 亚洲天堂免费在线观看视频| 久久综合九色综合欧美亚洲| 色94色欧美sute亚洲13| 91丨porny丨国产入口| 国产suv精品一区二区三区| 久久国产精品色| 视频一区免费在线观看| 日韩在线一二三区| 偷拍亚洲欧洲综合| 1区2区3区欧美| 日韩毛片一二三区| 欧美精品一区二区在线观看| 欧美一级精品大片| 欧美一区二区精美| 精品剧情v国产在线观看在线| 欧美日韩国产综合一区二区三区 | 激情图片小说一区| 国产精品综合在线视频| 国产乱码字幕精品高清av| 精品一区二区三区免费视频| 国产美女视频一区| fc2成人免费人成在线观看播放| 成人动漫在线一区| 99久久精品国产毛片| 欧美在线观看一二区| 欧美狂野另类xxxxoooo| 91精品视频网| 国产亚洲精品免费| 亚洲婷婷综合久久一本伊一区| 午夜精品123| 国产精品一线二线三线精华| a亚洲天堂av| 91精品国产91久久久久久一区二区 | 精品国精品国产| 国产精品色哟哟| 日韩精品三区四区| 老司机精品视频在线| bt7086福利一区国产| 欧美一三区三区四区免费在线看| 欧美成人三级电影在线| 自拍偷拍欧美精品| 麻豆精品视频在线观看免费| www.欧美.com| 欧美一区二区高清| 亚洲天堂av老司机| 精彩视频一区二区三区| 91国产成人在线| 国产午夜精品一区二区| 亚洲va欧美va人人爽| 成+人+亚洲+综合天堂| 欧美一区二区国产| 亚洲主播在线播放| www.欧美色图| 久久久久久久久久久99999| 日韩福利电影在线| 91在线无精精品入口| 中文欧美字幕免费| 国产麻豆视频精品| 91精品婷婷国产综合久久| 欧美国产综合色视频| 国产精品一区二区在线播放| 日韩欧美黄色影院| 九九视频精品免费| 欧美顶级少妇做爰| 亚洲国产日日夜夜| 99久久国产免费看| 一区二区日韩av| 欧美日韩精品免费| 石原莉奈在线亚洲三区| 91麻豆精品久久久久蜜臀| 亚洲狠狠爱一区二区三区| 色婷婷激情综合| 亚洲高清免费观看高清完整版在线观看| 91免费在线看| 亚洲另类春色国产| 91老师片黄在线观看| 欧美国产日韩a欧美在线观看| 国v精品久久久网| 亚洲精品日日夜夜| 这里是久久伊人| 国产91精品露脸国语对白| 久久精品视频一区二区三区| 91香蕉视频mp4|