多多色-多人伦交性欧美在线观看-多人伦精品一区二区三区视频-多色视频-免费黄色视屏网站-免费黄色在线

國內最全IT社區平臺 聯系我們 | 收藏本站
阿里云優惠2
您當前位置:首頁 > php開源 > php教程 > 二叉樹刪除詳解

二叉樹刪除詳解

來源:程序員人生   發布時間:2014-12-22 09:03:10 閱讀次數:2843次

2叉查找樹的刪除進程:

假定要刪除樹T中的某節點z,此時對如何刪除z要分3種情況斟酌:

1.      z無子女:此時直接刪除z便可

//z無子女 TREE-DELETE0(T,z) { if(z == left[p[z]]) left[p[z]] = NULL; else right[p[z]] = NULL; p[z] = NULL; }

2.      z有1個子女:用其子節點代替自己便可

//z只有1個子女 TREE-DELETE1(T,z) { //y為z的子女 if(left[z] !=NULL) y = left[z]; else y = right[z]; //用y代替z并將z刪除 if(z == left[p[z]]) p[y] = left[p[z]]; else p[y] = right[p[z]]; p[z] = NULL; }

3.      z有兩個子女:刪除z的后繼y(y不會有左子女,刪除T中的y對應情況1或2),再用y的內容代替z的內容

//z有兩個子女(這里實際上是刪除y) TREE-DELETE2(T,z) { y = TREE-SUCCESSOR(z); x = right[y]; //z的后繼y無子女 if(x == NULL) TREE-DELETE0(T,y); else TREE-DELETE1(T,y); key[z] = key[y]; }

刪除2叉查找樹的總進程:

TREE-DELETE(T,z) { if(z == root[T]) {root[T] = NULL;return;} bool bleftEmpty = (left[z] == NULL); bool brightEmpty = (right[z] == NULL); //左右均不為空 if(!bleftEmpty && !brightEmpty ) TREE-DELETE2(T,z); //左右均為空 else if(bleftEmpty && brightEmpty) TREE-DELETE0(T,z); //只有1個子女 else TREE-DELETE1(T,z); }

可簡寫為:

1.肯定y為要刪除的節點:若z無子女則y為z;若z唯一1個子女則y為該子女;若z有兩個子女則y為z的后繼

if(left[z] == NULL || right[z] == NULL) y = z; else y = TREE-SUCCESSOR(z);
2.將x置為y的非空子女,若y無子女,則x置為空。若z無子女,則y為z,此時x為空;z有1個子女,y為z,此時x為z的子女;z有兩個子女,y為z 的后繼且由2叉查找樹性質知y最多只有1個孩子,x為y的子女(可能為空)。綜上,x要末為y的唯1的非空子女,要末為空。

if(left[y] != NULL) x = left[y]; else x = right[y];
3.通過修改p[y]和x的指針刪除y。

if(x != NULL) p[x] = p[y]; if(p[y] == NULL) root[T] = x; else if(y == left[p[y]]) left[p[y]] = x; else right[p[y]] = x;
4.如果z有兩個子女,則z的后繼是要被刪除的節點,應將y中的內容復制置z:

if(y != z) key[z] = key[y];
即:

TREE-DELETE(T,z) { //肯定y為要刪除的節點 if(left[z] == NULL || right[z] == NULL) y = z; else y = TREE-SUCCESSOR(z); if(left[y] != NULL) x = left[y]; else x = right[y]; if(x != NULL) p[x] = p[y]; if(p[y] == NULL) root[T] = x; else if(y == left[p[y]]) left[p[y]] = x; else right[p[y]] = x; if(y != z) key[z] = key[y]; }


生活不易,碼農辛苦
如果您覺得本網站對您的學習有所幫助,可以手機掃描二維碼進行捐贈
程序員人生
------分隔線----------------------------
分享到:
------分隔線----------------------------
關閉
程序員人生
主站蜘蛛池模板: 欧美美女free| 国产婷婷一区二区在线观看 | 国产精品久久久久久久久夜色 | 一区二区不卡在线 | 久久久久亚洲日日精品 | 国产91精品久久久久久 | a级片网站 | 日本护士高清xxxxx | 毛片专区 | 日本-区二区三区免费精品 日本人69式视频最长 | 91情国产l精品国产亚洲区 | 成人做爰免费视频免费看 | 日本一区二区不卡久久入口 | 欧美 在线播放 | 亚洲精品伊人 | 日本在线观看不卡免费视频 | 亚洲精品一区二区三区在线观看 | 性福天堂网站 | 羞羞羞网站 | 依人在线免费视频 | 精品国产91久久久久久久 | 亚洲精品乱码中文字幕无线 | 欧美综合在线视频 | 日韩欧美视频在线一区二区 | 99re热久久精品这里都是精品 | 国产亚洲精品成人一区看片 | 欧美午夜性刺激在线观看免费 | 噜噜噜在线 | 亚州视频一区 | 久久久久色 | 91亚洲国产成人久久精品网址 | 欧美一级欧美三级在线观看 | 亚洲三级视频 | a黄色片| 亚洲精品欧美日韩 | 欧美日韩一区二区三区免费不卡 | 久久国产影视 | 精品国产福利久久久 | 狠狠色噜噜狠狠狠狠五月婷 | 亚洲高清视频免费 | 欧美高清在线精品一区二区不卡 |