青青草原综合久久大伊人导航_色综合久久天天综合_日日噜噜夜夜狠狠久久丁香五月_热久久这里只有精品

Problem Solving using C++

Algorithm Study using C++

二叉搜索樹操作(2)--其他

#include <iostream>
#include 
<cstdlib>
using namespace std;

#ifndef NULL
#define NULL 
0
#endif

#ifndef MAXSIZE
#define MAXSIZE    
10
#endif

typedef struct BST
//Binary Search Tree
{
    
int key;
    
//maybe there are some other satellites
    
    struct BST
* left;
    struct BST
* right;
    struct BST
* parent;
} BST;

BST
* root=NULL;

void BST_Insert(int key)//add value key to the Binary Search Tree
{
    BST
* y=NULL;//y records the parent node
    BST* x=root;//x records the current node
    
    BST
* node = new BST();
    node
->key = key;
    node
->left = NULL;
    node
->right = NULL;
    node
->parent = NULL;
    
    
while(x!=NULL)
    {
        y
=x;
        
        
if(key<x->key)
            x
=x->left;
        
else
            x
=x->right;
    }
    
    node
->parent=y;
    
    
if(y==NULL)
        root 
= node;
    
else
    {
        
if(key<y->key)
            y
->left=node;
        
else
            y
->right=node;
    }
}

void BST_Delete(BST* p)
{
    
if(p)
    {
        BST_Delete(p
->left);
        BST_Delete(p
->right);
        delete p;
    }
}

void BST_Build()
{
    
int temp;
    
    cout
<<"Original Input:"<<endl;
    
for(int i=0;i<MAXSIZE;i++)
    {
        temp
=rand()%MAXSIZE;
        cout
<<temp<<" ";
        BST_Insert(temp);
    }
    cout
<<endl;
}

void BST_Inorder_Walk(BST* p)
{
    
    
if(p)
    {
        BST_Inorder_Walk(p
->left);
        cout
<<p->key<<" ";
        BST_Inorder_Walk(p
->right);
    }
}

void BST_Preorder_Walk(BST* p)
{
    
    
if(p)
    {
        cout
<<p->key<<" ";
        BST_Preorder_Walk(p
->left);
        BST_Preorder_Walk(p
->right);
    }
}

void BST_Postorder_Walk(BST* p)
{
    
if(p)
    {
        BST_Postorder_Walk(p
->left);
        BST_Postorder_Walk(p
->right);
        cout
<<p->key<<" ";
    }
}

BST
* BST_Search(int key)
{
    BST
* x=root;
    
    
while(x)
    {
        
if(x->key==key)
            
return x;
        
else
            
if(x->key>key)
                x
=x->left;
            
else
                x
=x->right;
    }
    
    
return NULL;    
}

BST
* BST_Min(BST* p=root)
{
    
//BST* p = root;
    
    
while(p->left)
    {
        p
=p->left;
    }
    
    
return p;
}

BST
* BST_Max(BST* p=root)
{
    
//BST* p = root;
    
    
while(p->right)
    {
        p
=p->right;
    }
    
    
return p;
}

BST
* BST_Successor(int key)
{
    BST
* p = BST_Search(key);
    BST
* y;
    
    
if(p)
    {
        
if(p->right)
        {
            
return BST_Min(p->right);
        }
        
        y
=p->parent;
        
while(y&&(y->right==p))
        {
            p
=y;
            y
=y->parent;
        }
        
        
return y;
    }
    
    
return NULL;
}

BST
* BST_Predecessor(int key)
{
    BST
* p = BST_Search(key);
    BST
* y;
    
    
if(p)
    {
        
if(p->left)
            
return BST_Max(p->left);
        
        y
=p->parent;
        
while(y&&(y->left==p))
        {
            p
=y;
            y
=y->parent;
        }
        
        
return y;
    }
    
    
return p;
}

BST
* BST_Delete(int key)
{
    BST
* p = BST_Search(key);
    BST
* y,*x;
    
    
if(p)
    {
        
if(!p->left||!p->right)
        {
            y
=p;
        }
        
else
            y
=BST_Successor(key);
            
        
if(y->left)
            x
=y->left;
        
else
            x
=y->right;
        
        
if(x!=NULL)
            x
->parent=y->parent;
            
        
if(!y->parent)
            root
=x;
        
else
        {
            
if(y==y->parent->left)
                y
->parent->left=x;
            
else
                y
->parent->right=x;
        }
        
        
if(y!=p)
            p
->key=y->key;
        
        
return y;
    }
    
    
return p;
}

int main(int argc,char* argv[])
{
    
int input;
    
    BST_Build();
    
    BST_Delete(
7);
    
    cout
<<"Inorder Walk:"<<endl;
    BST_Inorder_Walk(root);
    cout
<<endl;
    
    cout
<<"Preorder Walk:"<<endl;
    BST_Preorder_Walk(root);
    cout
<<endl;
    
    cout
<<"Postorder Walk:"<<endl;
    BST_Postorder_Walk(root);
    cout
<<endl;
    
    cout
<<"Min: "<<BST_Min()->key<<endl;
    cout
<<"Max: "<<BST_Max()->key<<endl;
    
    
while(1)
    {
        cin
>>input;
        
        
if(input==-1)
            
break;
        
        BST
* p;
        
if(p=BST_Search(input))
        {
            cout
<<"Parent="<<(p->parent)->key<<endl;
            
if(p->left)
                cout
<<"Left:"<<p->left->key<<endl;
            
if(p->right)
                cout
<<"Right:"<<p->right->key<<endl;
        }
        
else
        {
            cout
<<"Not found!"<<endl;
            
break;
        }
        
        
if(p=BST_Predecessor(input))
        {
            cout
<<"Predecessor:"<<p->key<<endl;
        }
        
        
if(p=BST_Successor(input))
        {
            cout
<<"Successor:"<<p->key<<endl;
        }
    }
    
    BST_Delete(root);
    
    cout
<<endl;
    system(
"pause");
    
return 0;
}

posted on 2007-08-24 12:35 Kingoal Lee's Alogrithm Study using cplusplus 閱讀(191) 評論(0)  編輯 收藏 引用


只有注冊用戶登錄后才能發(fā)表評論。
網(wǎng)站導(dǎo)航: 博客園   IT新聞   BlogJava   博問   Chat2DB   管理


My Links

Blog Stats

常用鏈接

留言簿(1)

隨筆檔案

搜索

最新評論

閱讀排行榜

評論排行榜

青青草原综合久久大伊人导航_色综合久久天天综合_日日噜噜夜夜狠狠久久丁香五月_热久久这里只有精品
  • <ins id="pjuwb"></ins>
    <blockquote id="pjuwb"><pre id="pjuwb"></pre></blockquote>
    <noscript id="pjuwb"></noscript>
          <sup id="pjuwb"><pre id="pjuwb"></pre></sup>
            <dd id="pjuwb"></dd>
            <abbr id="pjuwb"></abbr>
            国产精品丝袜91| 性欧美1819sex性高清| 免费在线播放第一区高清av| 亚洲久久一区二区| 国产精品无码专区在线观看 | 亚洲免费福利视频| 亚洲高清视频中文字幕| 激情久久五月天| 亚洲电影在线免费观看| 精品成人国产| 亚洲精品在线二区| 一区二区三区av| 午夜精品一区二区三区在线视| 午夜在线a亚洲v天堂网2018| 久久蜜桃香蕉精品一区二区三区| 欧美成va人片在线观看| 日韩视频精品| 亚洲精品一区二区三区不| 99国产精品久久久久久久| 亚洲欧美日韩精品久久久| 欧美专区日韩视频| 欧美黄色aa电影| 国产精品永久免费观看| 国模精品娜娜一二三区| 亚洲麻豆视频| 欧美伊人久久久久久午夜久久久久 | 欧美日韩成人在线观看| 国产精品久久久久91| 国内揄拍国内精品久久| 另类天堂视频在线观看| 欧美日韩福利视频| 狠狠久久亚洲欧美| 亚洲综合精品四区| 亚洲人体偷拍| 久久久久国产一区二区三区| 亚洲国产婷婷香蕉久久久久久| 亚洲黄色一区| 久久国产精品久久国产精品| 亚洲午夜精品17c| 欧美a级一区| 国产欧美一区二区精品性| 欧美激情综合五月色丁香| 国产亚洲成av人在线观看导航 | 久久精品动漫| 亚洲第一区中文99精品| 亚洲欧美日韩久久精品| 欧美精品国产一区| 亚洲高清视频中文字幕| 久久精品视频亚洲| 亚洲色图在线视频| 欧美日本精品| 99riav1国产精品视频| 欧美国产免费| 美女国产一区| 亚洲黄色在线视频| 欧美成在线视频| 久久婷婷蜜乳一本欲蜜臀| 国内精品视频久久| 久久综合福利| 蜜桃av一区二区在线观看| 雨宫琴音一区二区在线| 免费日韩成人| 免费观看日韩av| 亚洲精品乱码久久久久久| 免费中文日韩| 欧美丰满高潮xxxx喷水动漫| 日韩视频免费在线观看| 亚洲精品日韩一| 欧美性大战久久久久久久蜜臀| 一区二区三区四区国产| 一区二区三区免费在线观看| 国产精品成人观看视频免费 | 久久国产精品亚洲va麻豆| 久久激情中文| 亚洲日本国产| 老司机精品视频网站| 韩国一区电影| 香蕉乱码成人久久天堂爱免费| 亚洲精品美女在线观看| 欧美国产亚洲视频| 亚洲精品视频二区| 亚洲黄色一区| 欧美破处大片在线视频| 日韩午夜激情| 午夜在线播放视频欧美| 国产日韩欧美精品综合| 久久精品日韩| 久久久九九九九| 亚洲电影免费在线| 亚洲福利一区| 欧美黄色aa电影| 亚洲一区日本| 日韩视频精品在线观看| 亚洲专区免费| 国产一区二区三区高清播放| 久久精品视频亚洲| 免费不卡在线观看av| 一级成人国产| 亚洲欧美日韩在线播放| 国产综合久久久久久| 精品成人一区二区| 蜜臀91精品一区二区三区| 欧美不卡福利| 亚洲一区二区三区中文字幕在线 | 国产精品视频精品视频| 亚洲欧美日韩在线观看a三区| 亚洲一区二区三区色| 国产一区二区看久久| 欧美成人精品| 欧美日精品一区视频| 欧美一级一区| 亚洲午夜精品福利| 影音先锋久久久| 亚洲男人的天堂在线| 亚洲国内精品在线| 国产精品99久久不卡二区| 国产真实乱偷精品视频免| 欧美激情一区在线观看| 国产精品日韩一区| 亚洲成人在线视频播放| 国产精品成人久久久久| 免费观看日韩av| 国产精品久久久久999| 欧美成人综合| 国产日韩欧美一区二区三区四区| 欧美高清视频免费观看| 国产精品区免费视频| 性久久久久久久久| 国产精品国产精品国产专区不蜜| 欧美成人国产va精品日本一级| 欧美日韩综合不卡| 欧美二区乱c少妇| 国产欧美在线视频| 日韩特黄影片| 亚洲欧洲精品成人久久奇米网| 日韩五码在线| 亚洲精品久久| 久久久99免费视频| 午夜欧美不卡精品aaaaa| 欧美风情在线观看| 欧美mv日韩mv国产网站| 国产午夜精品久久久久久免费视| 麻豆成人精品| 欧美日韩在线综合| 亚洲激情图片小说视频| 国产在线欧美| 久久福利一区| 久久精品二区三区| 国产精品入口66mio| 一本色道久久加勒比88综合| 久久爱另类一区二区小说| 久久久国产一区二区三区| 国产精品美女久久久久久2018| 亚洲欧洲日韩女同| 日韩视频在线一区| 久久综合九色综合欧美就去吻| 久久久久在线| 狠狠色综合日日| 99re66热这里只有精品4| 亚洲永久视频| 国产精品理论片在线观看| 亚洲视频 欧洲视频| 亚洲免费中文| 国产精品自拍在线| 久久狠狠亚洲综合| 香蕉av777xxx色综合一区| 欧美精品福利视频| 亚洲精品视频一区| 亚洲久久在线| 欧美日韩精品综合| 日韩视频欧美视频| 亚洲一级高清| 国产精品一级二级三级| 午夜精品国产更新| 亚洲精品偷拍| 国产精品欧美日韩久久| 亚洲男女毛片无遮挡| 久久久久国产一区二区三区四区 | 国产精品有限公司| 亚洲免费综合| 久久精品国产亚洲精品 | 亚洲福利电影| 亚洲欧美日韩区| 国产亚洲欧美日韩在线一区 | 亚洲国产精品女人久久久| 国产视频一区二区在线观看 | 欧美+日本+国产+在线a∨观看| 免费在线成人| 亚洲一区二区三区国产| 国产婷婷一区二区| 欧美成人国产| 亚洲免费伊人电影在线观看av| 久久久亚洲人| 一本色道精品久久一区二区三区| 欧美系列亚洲系列| 久久精品亚洲精品国产欧美kt∨| 欧美激情视频一区二区三区不卡| 黄色一区二区在线| 性欧美xxxx视频在线观看| 亚洲高清在线观看|