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

bon

  C++博客 :: 首頁(yè) :: 聯(lián)系 :: 聚合  :: 管理
  46 Posts :: 0 Stories :: 12 Comments :: 0 Trackbacks

常用鏈接

留言簿(2)

我參與的團(tuán)隊(duì)

搜索

  •  

最新評(píng)論

  • 1.?re: pku 1861
  • 評(píng)論內(nèi)容較長(zhǎng),點(diǎn)擊標(biāo)題查看
  • --edward2
  • 2.?re: pku 3349
  • 大哥超時(shí) 勒
  • --sum
  • 3.?re: pku 3070
  • 學(xué)習(xí)下,哇哈哈
  • --bear
  • 4.?re: poj 3340
  • 不用DFS的,直接有數(shù)學(xué)規(guī)律的,找出滿足條件的最小的數(shù)就可以了
  • --czcomt
  • 5.?re: pku 3070
  • 方法不錯(cuò)額~~~
  • --Zeor

閱讀排行榜

評(píng)論排行榜

今天實(shí)現(xiàn)了《算法導(dǎo)論》里提到的二叉搜索樹(shù)。
支持的操作有:插入、刪除、查詢、前驅(qū)、后繼、遍歷等。
首先定義樹(shù)節(jié)點(diǎn)的結(jié)構(gòu)體:
struct node{
    node(
long k,int position){
        l
=r=p=NULL;
        key
=k,pos=position;
    }
    node(){
        l
=r=p=NULL;
    }
    node 
*l,*r,*p;
    
int pos;
    
long key;
};

1. 插入操作
    
void insert(long k,int position)
{
    node 
*yy=NULL;
    node 
*xx = root;
    
while(xx!=NULL){
        yy
=xx;
        
if(k>xx->key) xx=xx->r;
        
else xx=xx->l;
    }
    node 
*z=new node(k,position);
    z
->p=yy;
    
// 空樹(shù)
    if(yy==NULL) root=z;
    
else{
        
if(yy->key<z->key) yy->r=z;
        
else yy->l=z;
    }
}
插入就是將新的鍵值放到合適的位置,使得二叉搜索樹(shù)的性質(zhì)得以保存。
用兩個(gè)指針yy,xx,yy指向xx的父節(jié)點(diǎn)。xx跟yy同時(shí)向下搜索:當(dāng)待插入鍵值小于xx指向的節(jié)點(diǎn)鍵值時(shí),xx指向xx的左兒子,否則指向右兒子。yy跟進(jìn)。直到xx為空,說(shuō)明到達(dá)合適的位置了,此時(shí)建立新的節(jié)點(diǎn)并把信息存進(jìn)去。修改yy所指的節(jié)點(diǎn)(此時(shí)為新節(jié)點(diǎn)的父節(jié)點(diǎn))的兒子指針。

2. 刪除操作
刪除操作比較復(fù)雜一些,先看下面的代碼:
 1 bool del(long key,node &res)
 2 {
 3     node *z=search(key);
 4     if(z==NULL) return false;
 5     
 6     node *y;
 7     if(z->==NULL || z->r==NULL) y=z;
 8     else y=successor(z->key);
 9     
10     // x指向y的非空兒子,此時(shí)y最多只有一個(gè)兒子。若y無(wú)兒子,x為空
11     node *x;
12     if(y->l!=NULL) x=y->l;
13     else x=y->r;
14 
15     // y有一個(gè)兒子,則將y刪去
16     if(x!=NULL)    x->p=y->p;
17     
18     // y is the root
19     if(y->p==NULL) root=x;
20     else{
21         if(y==y->p->l) (y->p)->l=x;
22         else y->p->r=x;
23     }
24 
25     // 當(dāng)y!=z時(shí),則y是z的后繼,刪去z后,y取代z
26     if(y!=z) z->key=y->key,z->pos=y->pos;
27     res.key=z->key,res.pos=z->pos;
28     delete y;
29     return true;
30 }
刪除鍵值為k的節(jié)點(diǎn)時(shí),首先要找到這個(gè)節(jié)點(diǎn),用函數(shù)node *search(long k),返回一個(gè)指針指向包含該鍵值的節(jié)點(diǎn)(如第3行所示)。
接下來(lái)分三種情況:
被刪節(jié)點(diǎn)無(wú)孩子、只有一個(gè)孩子、有兩個(gè)孩子。
若是情況1或2,y指向被刪節(jié)點(diǎn),否則指向被刪節(jié)點(diǎn)的后繼,如6~8行所示。這個(gè)操作后,y所指向的節(jié)點(diǎn)至多只有1個(gè)孩子(想想為什么)
接著指針x指向y唯一的孩子(若有的話)并改變x的父親指針,指向y的父節(jié)點(diǎn)(注意此時(shí)y的父親指針仍指向y的父親)
19~23行處理y是根的情況;26行處理case3的情況。
最后刪除y,并以引用變量res返回被刪的節(jié)點(diǎn)的信息。
3. 搜索
包括找一個(gè)鍵值k,找鍵值k的前驅(qū)、后繼,最大最小值。
原理比較簡(jiǎn)單,代碼如下:
 1 // 返回以x為根的子樹(shù)的最小值
 2 node *minimum(node *x)
 3 {
 4     while(x->l!=NULL) x=x->l;
 5     return x;
 6 }
 7 
 8 node *maximum(node *x)
 9 {
10     while(x->r!=NULL) x=x->r;
11     return x;
12 }
13 
14 // 返回x的后繼,即比x大的數(shù)中最小的一個(gè)
15 node *successor(long k)
16 {
17     node *x=search(k);
18     node *y=NULL;
19     if(x->r!=NULL) return minimum(x->r);
20     else{
21         y=x->p;
22         while(y!=NULL && x==y->r){
23             x=y;
24             y=x->p;
25         }
26     }
27     // 若y==NULL 則x為根節(jié)點(diǎn)且無(wú)后繼
28     return y;
29 }
30 
31 node *predecessor(long k)
32 {
33     node *x=search(k);
34     node *y=NULL;
35     if(x->l!=NULL) return maximum(x->l);
36     else{
37         y=x->p;
38         while(y!=NULL && x==y->l){
39             x=y;
40             y=x->p;
41         }
42     }
43     return y;
44 }
4. 中序遍歷
   相當(dāng)于是從小到大輸出樹(shù)中節(jié)點(diǎn)的鍵值。
1 void inorderWalk(node *x)
2 {
3     if(x!=NULL){
4         inorderWalk(x->l);
5         printf("%d ",x->key);
6         inorderWalk(x->r);
7     }
8 }

posted on 2008-03-07 20:52 bon 閱讀(521) 評(píng)論(0)  編輯 收藏 引用 所屬分類: Notes on Introduction to Algorithms

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


Google PageRank 
Checker - Page Rank Calculator
青青草原综合久久大伊人导航_色综合久久天天综合_日日噜噜夜夜狠狠久久丁香五月_热久久这里只有精品
  • <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>
            激情久久久久久久| 亚洲欧美日韩一区| 亚洲麻豆一区| 久久精品国产v日韩v亚洲| 亚洲国产1区| 久久亚洲不卡| 激情五月婷婷综合| 久久人体大胆视频| 欧美综合国产| 国产偷久久久精品专区| 午夜国产精品影院在线观看| 亚洲视频福利| 国产精品久久久久久福利一牛影视| 日韩视频在线观看国产| 亚洲国产日韩欧美在线99| 免费日韩精品中文字幕视频在线| 伊人色综合久久天天五月婷| 久久精品一二三区| 欧美一区日本一区韩国一区| 国产无遮挡一区二区三区毛片日本| 亚洲免费一在线| 亚洲自拍高清| 国产主播在线一区| 免费短视频成人日韩| 欧美va天堂| 一区二区欧美国产| 亚洲视频1区2区| 国产中文一区二区三区| 美国成人毛片| 欧美国产日韩视频| 亚洲午夜国产一区99re久久| 亚洲影院免费观看| 一区二区在线视频播放| 亚洲第一精品夜夜躁人人爽| 欧美片第一页| 久久电影一区| 欧美不卡福利| 性欧美大战久久久久久久久| 久久精品视频导航| 日韩视频一区| 午夜精品久久久久久久久| 影音先锋成人资源站| 亚洲黄色小视频| 国产精品伦理| 欧美承认网站| 国产精品久久久久久一区二区三区 | 日韩午夜在线电影| 欧美成人国产一区二区| 一区二区三区精品视频| 国产免费一区二区三区香蕉精| 毛片精品免费在线观看| 欧美人与性动交cc0o| 欧美在线高清| 欧美精品日韩综合在线| 欧美在线视频网站| 欧美黄色视屏| 久久久噜噜噜久久狠狠50岁| 欧美精品一区二| 久久婷婷国产综合精品青草 | 国产一区二区欧美日韩| 亚洲二区视频在线| 国产亚洲一二三区| 日韩一区二区免费高清| 亚洲国产成人一区| 亚洲欧美一区二区原创| 日韩视频中文字幕| 久久久噜噜噜久久久| 性视频1819p久久| 欧美日韩精品综合在线| 欧美ed2k| 一区二区视频免费完整版观看| 艳妇臀荡乳欲伦亚洲一区| 在线日本成人| 久久大逼视频| 欧美一区二区网站| 国产精品国产三级国产aⅴ浪潮| 亚洲国产精品成人精品| 亚洲高清资源| 免费在线亚洲| 亚洲高清免费视频| 1024精品一区二区三区| 久久精品一区二区三区四区| 午夜天堂精品久久久久| 欧美日韩一区二区在线播放| 欧美激情按摩| 亚洲国产视频a| 可以免费看不卡的av网站| 久久蜜桃香蕉精品一区二区三区| 国产精品一区二区你懂得 | 午夜日韩在线观看| 亚洲欧美日韩国产综合| 欧美日韩妖精视频| 99精品免费视频| 日韩一级大片| 欧美喷潮久久久xxxxx| 亚洲欧洲精品一区二区三区不卡| 亚洲激情婷婷| 欧美国产亚洲精品久久久8v| 亚洲国产日韩欧美在线99| 亚洲日本欧美在线| 欧美国产三区| 一区二区三区视频在线| 亚洲综合视频在线| 国产精品多人| 欧美亚洲一区二区在线| 久久久久国产一区二区| 国产综合在线视频| 久久久久一区| 亚洲欧洲日本专区| 亚洲视频电影在线| 国产精品网站在线| 亚洲第一搞黄网站| 欧美激情国产高清| 日韩视频在线免费| 欧美亚洲视频| 亚洲二区免费| 欧美日韩国产三级| 亚洲伊人色欲综合网| 久久精品国产久精国产思思| 激情成人综合| 欧美国产丝袜视频| 亚洲永久免费视频| 欧美成人精品h版在线观看| 亚洲精品系列| 国产精品一级久久久| 久色成人在线| 99精品久久| 麻豆精品精品国产自在97香蕉| 亚洲国产精品va在线观看黑人 | 国产欧美精品在线| 久久精品成人| 一区二区免费在线播放| 久久婷婷av| 亚洲夜晚福利在线观看| 国产日韩在线一区| 欧美精品国产精品| 欧美一区日韩一区| 在线亚洲精品| 久热精品视频在线观看一区| 一本色道88久久加勒比精品| 国产欧美日韩精品丝袜高跟鞋| 猛干欧美女孩| 午夜精品久久| 一区二区电影免费在线观看| 久久在线免费观看视频| 午夜一区不卡| 一区二区三区视频在线观看| 久久天天躁狠狠躁夜夜爽蜜月| 一区二区免费在线观看| 欧美二区不卡| 久久久久久久999| 亚洲小视频在线观看| 亚洲精品国产精品乱码不99 | 正在播放欧美视频| 雨宫琴音一区二区在线| 国产精品免费一区二区三区在线观看 | 亚洲欧美日本国产有色| 亚洲欧洲日产国产综合网| 国产亚洲一区在线播放| 欧美婷婷久久| 欧美日韩成人在线播放| 美女91精品| 久久免费偷拍视频| 久久国产精品色婷婷| 香蕉乱码成人久久天堂爱免费 | 欧美韩日一区| 美女视频网站黄色亚洲| 久久久www成人免费毛片麻豆| 亚洲午夜精品久久| 一区二区三区四区精品| 99精品视频免费| 日韩一区二区电影网| 最近中文字幕mv在线一区二区三区四区| 欧美 日韩 国产 一区| 久久免费国产| 久久精品视频免费观看| 亚洲欧美国内爽妇网| 一区二区三区高清视频在线观看| 亚洲激情午夜| 亚洲国产综合视频在线观看| 欧美激情按摩| 亚洲激情综合| 亚洲精品久久久久| 亚洲精品综合久久中文字幕| 亚洲国产成人av| 亚洲黑丝在线| 亚洲美女网站| 一区二区日韩| 午夜精品久久久久久久久久久久| 亚洲一区二区成人| 欧美一区二区成人| 久久久久九九视频| 欧美大胆人体视频| 欧美日韩免费网站| 国产精品日韩在线| 国产一区二区三区奇米久涩| 国内精品模特av私拍在线观看| 黑丝一区二区三区| 亚洲精品社区| 亚洲尤物在线|