9.3.1強蓑臥孀燕!屈我電會峯
匯.屈我電會峯協吶
屈我電會峯?Binary Sort Tree?賜宀頁匯臣腎峯?賜宀頁醤嗤和双來嵎議屈我峯?
- 飛恣徨峯音腎?夸恣徨峯貧侭嗤潤泣議峙譲弌噐功潤泣議峙?飛嘔徨峯音腎?夸嘔徨峯貧侭嗤潤泣議峙譲寄噐功潤泣議峙。
- 恣嘔徨峯匆脅頁屈我電會峯。
屈.屈我電會峯臥孀狛殻
貫凪協吶辛需?屈我電會峯議臥孀狛殻葎?
- 飛臥孀峯葎腎?臥孀払移。
- 臥孀峯掲腎?繍公協峙kx 嚥臥孀峯議功潤泣購囚鷹曳熟。
-
飛屢吉?臥孀撹孔?潤崩臥孀狛殻?倦夸?
a?輝公kx 弌噐功潤泣購囚鷹?臥孀繍壓參恣徨溺葎功議徨峯貧写偬序佩?廬?
b?輝公kx 寄噐功潤泣購囚鷹?臥孀繍壓參嘔徨溺葎功議徨峯貧写偬序佩?廬?
typedef struct NODE
{ ElemType elem; /*方象圷殆忖粁*/
struct NODE *lc,*rc; /*恣、嘔峺寞忖粁*/
}NodeType; /*屈我峯潤泣窃侏*/
‐麻隈9.4/
int SearchElem(NodeType *t,NodeType **p,NodeType **q,KeyType kx)
{ /*壓屈我電會峯t 貧臥孀購囚鷹葎kx 議圷殆?飛孀欺?卦指1?拝q 峺?乎潤泣?p 峺?凪幻潤泣?*/
/*倦夸?卦指0?拝p 峺?臥孀払移議恷朔匯倖潤泣*/int flag=0; *q=t;while(*q) /*貫功潤泣蝕兵
臥孀*/{ if(kx>(*q)->elem.key) /*kx 寄噐輝念潤泣*q 議圷殆購囚鷹*/
{ *p=*q; *q=(*q)->rc; } /*繍輝念潤泣*q 議嘔徨溺崔葎仟功*/
else
{ if(kx<(*q)->elem.key) /*kx 弌噐輝念潤泣*q 議圷殆購囚鷹*/
{ *p=*q; *q=(*q)->lc;} /*繍輝念潤泣*q 議恣徨溺崔葎仟功*/
else {flag=1;break;} /*臥孀撹孔?卦指*/
}
}/*while*/
return flag;
}
眉.屈我電會峯峨秘荷恬才更夛匯臣屈我電會峯
枠網胎?屈我電會峯嶄峨秘匯倖潤泣議狛殻?譜棋峨秘潤泣議購囚鷹葎kx?葎繍凪峨秘?枠勣壓屈我電會峯嶄序佩臥孀?飛臥孀撹孔?梓屈我電會峯協吶?棋峨秘潤泣厮贋壓?音喘峨秘?臥孀音撹孔扮?夸峨秘岻。咀緩?仟峨秘潤泣匯協頁恬葎匐徨潤泣耶紗貧肇議。
更夛匯臣屈我電會峯夸頁幟倖峨秘潤泣議狛殻。
‐箭9.3/芝村議購囚鷹會双葎?63?90?70?55?67?42?98?83?10?45?58?夸更夛匯臣屈我電會峯議狛殻泌和? ‐麻隈9.5/
int InsertNode (NodeType **t,KeyType kx)
{ /*壓屈我電會峯*t 貧峨秘購囚鷹葎kx 議潤泣*/
NodeType *p=*t,*q,*s; int flag=0;
if(!SearchElem(*t,&p,&q,kx)); /*壓*t 葎功議徨峯貧臥孀*/
{ s=(NodeType *))malloc(sizeof(NodeType)); /*賦萩潤泣?旺験峙*/
s->elem.key=kx;s->lc=NULL;s->rc=NULL;
flag=1; /*譜崔峨秘撹孔炎崗*/
if(!p) t=s; /*?腎峯嶄峨秘扮*/
else
{ if(kx>p->elem.key) p->rc=s; /*峨秘潤泣葎p 議嘔徨溺*/
else p->lc=s; /*峨秘潤泣葎p 議恣徨溺*/
}
}
return flag;
}
膨.屈我電會峯評茅荷恬
貫屈我電會峯嶄評茅匯倖潤泣岻朔?聞凪挽嬬隠隔屈我電會峯議蒙來軸辛。譜棋評潤泣葎*p?p 葎峺?棋評潤泣議峺寞??凪褒牌潤泣葎*f?參和蛍眉嶽秤趨序佩網胎。
- *p 潤泣葎匐潤泣?喇噐評肇匐潤泣朔音唹峒屁臣峯議蒙來?侭參?峪俶繍瓜評潤泣議褒牌潤泣屢哘峺寞囃個葎腎峺寞。泌夕9.6。
- *p 潤泣峪嗤嘔徨峯pr 賜峪嗤恣徨峯pl?緩扮?峪俶繍pr 賜pl 紋算*f 潤泣議*p 徨峯軸辛。泌夕9.7。
- *p 潤泣屡嗤恣徨峯Pl 嗽嗤嘔徨峯Pr?辛梓嶄會演煽隠隔嗤會序佩距屁。
- P 葎F 議恣徨溺扮嗤?…?Pl 徨峯?P?Pj ?S 徨峯?Pk?Sk徨峯?…?P2?S2徨峯?P1?S1徨峯?F?…
- P 葎F 議嘔徨溺扮嗤?…?F?Pl 徨峯?P?Pj ?S 徨峯?Pk?Sk徨峯?…?P2?S2徨峯?P1?S1徨峯?…
- P 葎F 議恣徨溺扮嗤?…?Pl 徨峯?Pj ?S 徨峯?Pk?Sk徨峯?…?P2?S2徨峯?P1?S1徨峯?F?…
- P 葎F 議嘔徨溺扮嗤?…?F?Pl 徨峯?Pj ?S 徨峯?Pk?Sk徨峯?…?P2?S2徨峯?P1?S1徨峯?…
嗤曾嶽距屁圭隈?
- 岷俊綜pl 葎*f 屢哘議徨峯?參pr 葎pl 嶄會演煽議恷朔匯倖潤泣pk 議嘔徨峯?
- 綜*p 潤泣議岷俊念駁Pr 賜岷俊朔写?斤Pl徨峯嶄會演煽議恷朔匯倖潤泣Pk?紋算*p 潤泣?壅梓〜議圭隈評肇Pr 賜Pk。夕9.8 侭幣議祥頁參*p 潤泣議岷俊念駁Pr 紋算*p。
‐麻隈9.6/
int DeleteNode(NodeType **t,KeyType kx)
{ NodeType *p=*t,*q,*s,**f;
int flag=0;
if(SearchElem(*t,&p,&q,kx));
{ flag=1; /*臥孀撹孔?崔評茅撹孔炎崗*/
if(p= =q) f=&(*t); /*棋評潤泣葎功潤泣扮*/
else /*棋評潤泣掲功潤泣扮*/
{ f=&(p->lc); if(kx>p->elem.key) f=&(p->rc);
} /*f 峺?棋評潤泣議幻潤泣議屢哘峺寞囃*/
if(!q->rc) *f=q->lc; /*飛棋評潤泣涙嘔徨峯?參恣徨峯紋算棋評潤泣*/
else
{ if(!q->lc) *f=q->rc; /*飛棋評潤泣涙恣徨峯?參嘔徨峯紋算棋評潤泣*/
else /*屡嗤恣徨峯嗽嗤嘔徨峯*/
{ p=q->rc;s=p;
while(p->lc) {s=p;p=p->lc;}/*壓嘔徨峯貧朴沫棋評潤泣議念駁p*/
*f=p;p->lc=q->lc; /*紋算棋評潤泣q?嶷俊恣徨峯*/
if(s!=p)
{ s->lc=p->rc; /*棋評潤泣議嘔徨溺嗤恣徨峯扮?珊勣嶷俊嘔徨峯*/
p->rc=q->rc;
}
}
}
free(q);
}
return flag;
}
斤公協會双秀羨屈我電會峯?飛恣嘔徨峯譲堡蛍下?夸凪臥孀狛殻窃貌噐嗤會燕議孵磯臥孀。徽飛公協會双圻云嗤會?夸秀羨議屈我電會峯祥揺晒葎汽全燕?凪臥孀丼楕揖乏會臥孀匯劔。咀緩?斤譲堡議屈我電會峯序佩峨秘賜評茅潤泣朔?哘斤凪距屁?聞凪卆隼隠隔譲堡。