6.4 ?沫屈我峯!?沫屈我峯議児云荷恬糞孖
壓?沫屈我峯嶄?潤泣議潤更辛參協吶葎泌和侘塀?
typedef char elemtype;
typedef struct BiThrNode {
elemtype data;
struct BiThrNode *lchild;
struct BiThrNode *rchild;
unsigned ltag:1;
unsigned rtag:1;
}BiThrNodeType,*BiThrTree;
和中參嶄會?沫屈我峯葎箭?網胎?沫屈我峯議秀羨、?沫屈我峯議演煽參式壓?沫屈我峯貧臥孀念駁潤泣、臥孀朔写潤泣、峨秘潤泣才評茅潤泣吉荷恬議糞孖麻隈。
秀羨?沫屈我峯?賜宀傍斤屈我峯?沫晒?糞嵎貧祥頁演煽匯臣屈我峯。壓演煽狛殻嶄?恵諒潤泣議荷恬頁殊臥輝念潤泣議恣、嘔峺寞囃頁倦葎腎?泌惚葎腎?繍万断個葎峺?念駁潤泣賜朔写潤泣議?沫。葎糞孖宸匯狛殻?譜峺寞pre 兵嶮峺?胡胡恵諒狛議潤泣?軸飛峺寞p 峺?輝念潤泣?夸pre 峺?万議念駁?參宴奐譜?沫。
総翌?壓斤匯臣屈我峯紗?沫扮?駅倬遍枠賦萩匯倖遊潤泣?秀羨遊潤泣嚥屈我峯議功潤泣議峺?購狼?斤屈我峯?沫晒朔?珊俶秀羨恷朔匯倖潤泣嚥遊潤泣岻寂議?沫。
和中頁秀羨嶄會?沫屈我峯議弓拷麻隈?凪嶄pre 葎畠蕉延楚。
int InOrderThr(BiThrTree *head,BiThrTree T)
{/*嶄會演煽屈我峯T?旺繍凪嶄會?沫晒?*head 峺?遊潤泣。*/
if (!(*head =(BiThrNodeType*)malloc(sizeof(BiThrNodeType)))) return 0;
(*head)->ltag=0; (*head)->rtag=1; /*秀羨遊潤泣*/
(*head)->rchild=*head; /*嘔峺寞指峺*/
if (!T) (*head)->lchild =*head; /*飛屈我峯葎腎?夸恣峺寞指峺*/
else { (*head)->lchild=T; pre= head;
InThreading(T); /*嶄會演煽序佩嶄會?沫晒*/
pre->rchild=*head; pre->rtag=1; /*恷朔匯倖潤泣?沫晒*/
(*head)->rchild=pre;
}
return 1;
}
麻隈6.13
void InTreading(BiThrTree p)
{/*嶄會演煽序佩嶄會?沫晒*/
if (p)
{ InThreading(p->lchild); /*恣徨峯?沫晒*/
if (!p->lchild) /*念駁?沫*/
{ p->ltag=1; p->lchild=pre;
}
if (!pre->rchild) /*朔写?沫*/
{ pre->rtag=1; pre->rchild=p;
}
pre=p;
InThreading(p->rchild); /*嘔徨峯?沫晒*/
}
}
麻隈6.14
斤噐嶄會?沫屈我峯貧議販匯潤泣?儖孀凪嶄會議念駁潤泣?嗤參和曾嶽秤趨?
?1?泌惚乎潤泣議恣炎崗葎1?椎担凪恣峺寞囃侭峺?議潤泣宴頁万議念駁潤泣?
?2?泌惚乎潤泣議恣炎崗葎0?燕苧乎潤泣嗤恣頃徨?功象嶄會演煽議協吶?万議念駁潤泣頁參乎潤泣議恣頃徨葎功潤泣議徨峯議恷嘔潤泣?軸冽彭凪恣徨峯議嘔峺寞全?和臥孀?輝蝶潤泣議嘔炎崗葎1 扮?万祥頁侭勣孀議念駁潤泣。
壓嶄會?沫屈我峯貧儖孀潤泣p 議嶄會念駁潤泣議麻隈泌和?
BiThrTree pre;
pre=p->lchild;
if (p->ltag!=1)
while (pre->rtag==0) pre=pre->rchild;
return(pre);
}
麻隈6.15
斤噐嶄會?沫屈我峯貧議販匯潤泣?儖孀凪嶄會議朔写潤泣?嗤參和曾嶽秤趨?
?1?泌惚乎潤泣議嘔炎崗葎1?椎担凪嘔峺寞囃侭峺?議潤泣宴頁万議朔写潤泣?
?2?泌惚乎潤泣議嘔炎崗葎0?燕苧乎潤泣嗤嘔頃徨?功象嶄會演煽議協吶?万議念駁潤泣頁參乎潤泣議嘔頃徨葎功潤泣議徨峯議恷恣潤泣?軸冽彭凪嘔徨峯議恣峺寞全?和臥孀?輝蝶潤泣議恣炎崗葎1 扮?万祥頁侭勣孀議朔写潤泣。
壓嶄會?沫屈我峯貧儖孀潤泣p 議嶄會朔写潤泣議麻隈泌和?
BiThrTree InPostNode?BiThrTree p?
{/*壓嶄會?沫屈我峯貧儖孀潤泣p 議嶄會朔写潤泣*/
BiThrTree post;
post=p->rchild;
if (p->rtag!=1)
while (post->rtag==0) post=post->lchild;
return(post);
}
麻隈6.16
參貧公竃議叙頁壓嶄會?沫屈我峯嶄儖孀蝶潤泣議念駁潤泣才朔写潤泣議麻隈。壓念會?沫屈我峯嶄儖孀潤泣議朔写潤泣參式壓朔會?沫屈我峯嶄儖孀潤泣議念駁潤泣辛參寡喘揖劔議圭隈蛍裂才糞孖。壓緩祥音壅網胎阻。
宸匯荷恬議糞孖卆象頁?飛匯倖潤泣頁蝶徨峯壓嶄會和議恷朔匯倖潤泣?夸万駅頁乎徨峯壓枠會和議恷朔匯倖潤泣。乎潤胎辛參喘郡屬隈屬苧。
和中祥卆象宸匯潤胎?網胎壓嶄會?沫屈我峯貧臥孀蝶潤泣壓枠會和朔写潤泣議秤趨。譜蝕兵扮?峺?緩蝶潤泣議峺寞葎p。
?1?飛棋鳩協枠會朔写議潤泣葎蛍屶潤泣?夸嗽嗤曾嶽秤趨?
? 輝p->ltag=0 扮?p->lchild 葎p 壓枠會和議朔写?
? 輝p->ltag=1 扮?p->rchild 葎p 壓枠會和議朔写。
?2?飛棋鳩協枠會朔写議潤泣葎匐徨潤泣?夸匆嗤曾嶽秤趨?
? 飛p->rchild 頁遊潤泣?夸演煽潤崩?
? 飛p->rchild 音頁遊潤泣?夸p 潤泣匯協頁參p->rchild 潤泣葎功議恣徨峯嶄壓嶄會演煽和議恷朔匯倖潤泣?咀緩p 潤泣匆頁壓乎徨峯嶄梓枠會演煽議恷朔匯倖潤泣。緩扮? 飛p->rchild 潤泣嗤嘔徨峯? 夸侭孀潤泣壓枠會和議朔写潤泣議仇峽葎p->rchild->rchild?飛p->rchild 葎?沫?夸斑p?p->rchild?郡鹸秤趨?2?議登協。
壓嶄會?沫屈我峯貧儖孀潤泣p 議枠會朔写潤泣議麻隈泌和?
BiThrTree IPrePostNode?BiThrTree head,BiThrTree p?
{/*壓嶄會?沫屈我峯貧儖孀潤泣p 議枠會議朔写潤泣,head 葎?沫峯議遊潤泣*/
BiThrTree post;
if (p->ltag==0) post=p->lchild;
else { post=p;
while (post->rtag==1&&post->rchild!=head) post=post->rchild;
post=post->rchild;
}
return(post);
}
麻隈6.17
宸匯荷恬議糞孖卆象頁?飛匯倖潤泣頁蝶徨峯壓嶄會和議及匯倖潤泣?夸万駅頁乎徨峯壓朔會和議及匯倖潤泣。乎潤胎辛參喘郡屬隈屬苧。
和中祥卆象宸匯潤胎?網胎壓嶄會?沫屈我峯貧臥孀蝶潤泣壓朔會和念駁潤泣議秤趨。譜蝕兵扮?峺?緩蝶潤泣議峺寞葎p。
?1?飛棋鳩協朔會念駁議潤泣葎蛍屶潤泣?夸嗽嗤曾嶽秤趨?
? 輝p->ltag=0 扮?p->lchild 葎p 壓朔會和議念駁?
? 輝p->ltag=1 扮?p->rchild 葎p 壓朔會和議念駁。
?2?飛棋鳩協朔會念駁議潤泣葎匐徨潤泣?夸匆嗤曾嶽秤趨?
? 飛p->lchild 頁遊潤泣?夸演煽潤崩?
? 飛p->lchild 音頁遊潤泣?夸p 潤泣匯協頁參p->lchild 潤泣葎功議嘔徨峯嶄壓嶄嶄會演煽和議及匯倖潤泣?咀緩p 潤泣匆頁壓乎徨峯嶄梓朔會演煽議及匯倖潤泣。緩扮?飛p->lchild 潤泣嗤恣徨峯? 夸侭孀潤泣壓朔會和議念駁潤泣議仇峽葎p->lchild->lchild?飛p->lchild 葎?沫?夸斑p?p->lchild?郡鹸秤趨?2?議登協。
壓嶄會?沫屈我峯貧儖孀潤泣p 議朔會念駁潤泣議麻隈泌和?
BiThrTree IPostPretNode?BiThrTree head,BiThrTree p?
{/*壓嶄會?沫屈我峯貧儖孀潤泣p 議枠會議朔写潤泣?head 葎?沫峯議遊潤泣*/
BiThrTree pre;
if (p->rtag==0) pre=p->rchild;
else { pre=p;
while (pre->ltag==1&& post->rchild!=head) pre=pre->lchild;
pre=pre->lchild;
}
return(pre);
}
麻隈6.18
旋喘壓嶄會?沫屈我峯貧儖孀朔写潤泣才念駁潤泣議麻隈?祥辛參演煽欺屈我峯議侭嗤潤泣。曳泌?枠孀欺梓蝶會演煽議及匯倖潤泣?隼朔壅卆肝臥儂凪朔写?賜枠孀欺梓蝶會演煽議恷朔匯倖潤泣?隼朔壅卆肝臥儂凪念駁。宸劔?屡音喘媚匆音喘弓拷祥辛參恵諒欺屈我峯議侭嗤潤泣。
壓嶄會?沫屈我峯貧臥孀峙葎x 議潤泣?糞嵎貧祥頁壓?沫屈我峯貧序佩演煽?繍恵諒潤泣議荷恬醤悶亟葎椎潤泣議峙嚥x 曳熟議囂鞘。和中公竃凪麻隈?
BiThrTree p;
p=head->lchild;
while (p->ltag==0&&p!=head) p=p->lchild;
while(p!=head && p->data!=x) p=InPostNode(p);
if (p==head)
{ printf(“Not Found the data!\n”);
return(0);
}
else return(p);
}
麻隈6.19
?沫屈我峯議厚仟頁峺?壓?沫屈我峯嶄峨秘匯倖潤泣賜宀評茅匯倖潤泣。匯違秤趨和?宸乂荷恬嗤辛嬬篤撒圻栖厮嗤議?沫?咀緩?壓俐個峺寞扮?珊俶勣斤?沫恂屢哘議俐個。匯違栖傍?宸倖狛殻議旗勺叱窄嚥嶷仟序佩?沫晒屢揖。宸戦叙網胎匯嶽曳熟酒汽議秤趨?軸壓嶄會?沫屈我峯嶄峨秘匯倖潤泣p?聞万撹葎潤泣s 議嘔頃徨。
和中蛍曾嶽秤趨栖蛍裂?
?1?飛s 議嘔徨峯葎腎?泌夕6.13 (a)侭幣?夸峨秘潤泣p 岻朔撹葎夕6.13 (b)侭幣議秤侘。壓宸嶽秤趨嶄?s 議朔写繍撹葎p 議嶄會朔写?s 撹葎p 議嶄會念駁?遇p 撹葎s 議嘔頃徨。屈我峯嶄凪万何蛍議峺寞才?沫音窟伏延晒。
?2?飛s 議嘔徨峯掲腎?泌夕6.14 (a)侭幣?峨秘潤泣p 岻朔泌夕6.14 (b)侭幣。S 圻栖議嘔徨峯延撹p 議嘔徨峯?喇噐p 短嗤恣徨峯?絞s 撹葎p 議嶄會念駁?p 撹葎s 議嘔頃徨?嗽喇噐s 圻栖議朔写撹葎p 議朔写?咀緩珊勣繍s 圻栖議云栖峺?s 議朔写議恣?沫?個葎峺?p。 和中公竃貧峰荷恬議麻隈。
void InsertThrRight(BiThrTree s,BiThrTree p)
{/*壓嶄會?沫屈我峯嶄峨秘潤泣p 聞凪撹葎潤泣s 議嘔頃徨*/
BiThrTree w;
p->rchild=s->rchild;
p->rtag=s->rtag;
p->lchild=s;
p->ltag=1; /*繍s 延葎p 議嶄會念駁*/
s->rchild=p;
s->rtag=0; /*p 撹葎s 議嘔頃徨*/
if(p->rtag==0) /*輝s 圻栖嘔徨峯音腎扮?孀欺s 議朔写w?延w 葎p 議朔写?p 葎w 議念駁*/
{ w=InPostNode(p);
w->lchild=p;
}
}
麻隈6.20
typedef char elemtype;
typedef struct BiThrNode {
elemtype data;
struct BiThrNode *lchild;
struct BiThrNode *rchild;
unsigned ltag:1;
unsigned rtag:1;
}BiThrNodeType,*BiThrTree;
和中參嶄會?沫屈我峯葎箭?網胎?沫屈我峯議秀羨、?沫屈我峯議演煽參式壓?沫屈我峯貧臥孀念駁潤泣、臥孀朔写潤泣、峨秘潤泣才評茅潤泣吉荷恬議糞孖麻隈。
1?秀羨匯臣嶄會?沫屈我峯
秀羨?沫屈我峯?賜宀傍斤屈我峯?沫晒?糞嵎貧祥頁演煽匯臣屈我峯。壓演煽狛殻嶄?恵諒潤泣議荷恬頁殊臥輝念潤泣議恣、嘔峺寞囃頁倦葎腎?泌惚葎腎?繍万断個葎峺?念駁潤泣賜朔写潤泣議?沫。葎糞孖宸匯狛殻?譜峺寞pre 兵嶮峺?胡胡恵諒狛議潤泣?軸飛峺寞p 峺?輝念潤泣?夸pre 峺?万議念駁?參宴奐譜?沫。
総翌?壓斤匯臣屈我峯紗?沫扮?駅倬遍枠賦萩匯倖遊潤泣?秀羨遊潤泣嚥屈我峯議功潤泣議峺?購狼?斤屈我峯?沫晒朔?珊俶秀羨恷朔匯倖潤泣嚥遊潤泣岻寂議?沫。
和中頁秀羨嶄會?沫屈我峯議弓拷麻隈?凪嶄pre 葎畠蕉延楚。
int InOrderThr(BiThrTree *head,BiThrTree T)
{/*嶄會演煽屈我峯T?旺繍凪嶄會?沫晒?*head 峺?遊潤泣。*/
if (!(*head =(BiThrNodeType*)malloc(sizeof(BiThrNodeType)))) return 0;
(*head)->ltag=0; (*head)->rtag=1; /*秀羨遊潤泣*/
(*head)->rchild=*head; /*嘔峺寞指峺*/
if (!T) (*head)->lchild =*head; /*飛屈我峯葎腎?夸恣峺寞指峺*/
else { (*head)->lchild=T; pre= head;
InThreading(T); /*嶄會演煽序佩嶄會?沫晒*/
pre->rchild=*head; pre->rtag=1; /*恷朔匯倖潤泣?沫晒*/
(*head)->rchild=pre;
}
return 1;
}
麻隈6.13
void InTreading(BiThrTree p)
{/*嶄會演煽序佩嶄會?沫晒*/
if (p)
{ InThreading(p->lchild); /*恣徨峯?沫晒*/
if (!p->lchild) /*念駁?沫*/
{ p->ltag=1; p->lchild=pre;
}
if (!pre->rchild) /*朔写?沫*/
{ pre->rtag=1; pre->rchild=p;
}
pre=p;
InThreading(p->rchild); /*嘔徨峯?沫晒*/
}
}
麻隈6.14
2?壓嶄會?沫屈我峯貧臥孀販吭潤泣議嶄會念駁潤泣
斤噐嶄會?沫屈我峯貧議販匯潤泣?儖孀凪嶄會議念駁潤泣?嗤參和曾嶽秤趨?
?1?泌惚乎潤泣議恣炎崗葎1?椎担凪恣峺寞囃侭峺?議潤泣宴頁万議念駁潤泣?
?2?泌惚乎潤泣議恣炎崗葎0?燕苧乎潤泣嗤恣頃徨?功象嶄會演煽議協吶?万議念駁潤泣頁參乎潤泣議恣頃徨葎功潤泣議徨峯議恷嘔潤泣?軸冽彭凪恣徨峯議嘔峺寞全?和臥孀?輝蝶潤泣議嘔炎崗葎1 扮?万祥頁侭勣孀議念駁潤泣。
壓嶄會?沫屈我峯貧儖孀潤泣p 議嶄會念駁潤泣議麻隈泌和?
BiThrTree InPreNode?BiThrTree p?
{/*壓嶄會?沫屈我峯貧儖孀潤泣p 議嶄會念駁潤泣*/BiThrTree pre;
pre=p->lchild;
if (p->ltag!=1)
while (pre->rtag==0) pre=pre->rchild;
return(pre);
}
麻隈6.15
3?壓嶄會?沫屈我峯貧臥孀販吭潤泣議嶄會朔写潤泣
斤噐嶄會?沫屈我峯貧議販匯潤泣?儖孀凪嶄會議朔写潤泣?嗤參和曾嶽秤趨?
?1?泌惚乎潤泣議嘔炎崗葎1?椎担凪嘔峺寞囃侭峺?議潤泣宴頁万議朔写潤泣?
?2?泌惚乎潤泣議嘔炎崗葎0?燕苧乎潤泣嗤嘔頃徨?功象嶄會演煽議協吶?万議念駁潤泣頁參乎潤泣議嘔頃徨葎功潤泣議徨峯議恷恣潤泣?軸冽彭凪嘔徨峯議恣峺寞全?和臥孀?輝蝶潤泣議恣炎崗葎1 扮?万祥頁侭勣孀議朔写潤泣。
壓嶄會?沫屈我峯貧儖孀潤泣p 議嶄會朔写潤泣議麻隈泌和?
BiThrTree InPostNode?BiThrTree p?
{/*壓嶄會?沫屈我峯貧儖孀潤泣p 議嶄會朔写潤泣*/
BiThrTree post;
post=p->rchild;
if (p->rtag!=1)
while (post->rtag==0) post=post->lchild;
return(post);
}
麻隈6.16
參貧公竃議叙頁壓嶄會?沫屈我峯嶄儖孀蝶潤泣議念駁潤泣才朔写潤泣議麻隈。壓念會?沫屈我峯嶄儖孀潤泣議朔写潤泣參式壓朔會?沫屈我峯嶄儖孀潤泣議念駁潤泣辛參寡喘揖劔議圭隈蛍裂才糞孖。壓緩祥音壅網胎阻。
4?壓嶄會?沫屈我峯貧臥孀販吭潤泣壓枠會和議朔写
宸匯荷恬議糞孖卆象頁?飛匯倖潤泣頁蝶徨峯壓嶄會和議恷朔匯倖潤泣?夸万駅頁乎徨峯壓枠會和議恷朔匯倖潤泣。乎潤胎辛參喘郡屬隈屬苧。
和中祥卆象宸匯潤胎?網胎壓嶄會?沫屈我峯貧臥孀蝶潤泣壓枠會和朔写潤泣議秤趨。譜蝕兵扮?峺?緩蝶潤泣議峺寞葎p。
?1?飛棋鳩協枠會朔写議潤泣葎蛍屶潤泣?夸嗽嗤曾嶽秤趨?
? 輝p->ltag=0 扮?p->lchild 葎p 壓枠會和議朔写?
? 輝p->ltag=1 扮?p->rchild 葎p 壓枠會和議朔写。
?2?飛棋鳩協枠會朔写議潤泣葎匐徨潤泣?夸匆嗤曾嶽秤趨?
? 飛p->rchild 頁遊潤泣?夸演煽潤崩?
? 飛p->rchild 音頁遊潤泣?夸p 潤泣匯協頁參p->rchild 潤泣葎功議恣徨峯嶄壓嶄會演煽和議恷朔匯倖潤泣?咀緩p 潤泣匆頁壓乎徨峯嶄梓枠會演煽議恷朔匯倖潤泣。緩扮? 飛p->rchild 潤泣嗤嘔徨峯? 夸侭孀潤泣壓枠會和議朔写潤泣議仇峽葎p->rchild->rchild?飛p->rchild 葎?沫?夸斑p?p->rchild?郡鹸秤趨?2?議登協。
壓嶄會?沫屈我峯貧儖孀潤泣p 議枠會朔写潤泣議麻隈泌和?
BiThrTree IPrePostNode?BiThrTree head,BiThrTree p?
{/*壓嶄會?沫屈我峯貧儖孀潤泣p 議枠會議朔写潤泣,head 葎?沫峯議遊潤泣*/
BiThrTree post;
if (p->ltag==0) post=p->lchild;
else { post=p;
while (post->rtag==1&&post->rchild!=head) post=post->rchild;
post=post->rchild;
}
return(post);
}
麻隈6.17
5?壓嶄會?沫屈我峯貧臥孀販吭潤泣壓朔會和議念駁
宸匯荷恬議糞孖卆象頁?飛匯倖潤泣頁蝶徨峯壓嶄會和議及匯倖潤泣?夸万駅頁乎徨峯壓朔會和議及匯倖潤泣。乎潤胎辛參喘郡屬隈屬苧。
和中祥卆象宸匯潤胎?網胎壓嶄會?沫屈我峯貧臥孀蝶潤泣壓朔會和念駁潤泣議秤趨。譜蝕兵扮?峺?緩蝶潤泣議峺寞葎p。
?1?飛棋鳩協朔會念駁議潤泣葎蛍屶潤泣?夸嗽嗤曾嶽秤趨?
? 輝p->ltag=0 扮?p->lchild 葎p 壓朔會和議念駁?
? 輝p->ltag=1 扮?p->rchild 葎p 壓朔會和議念駁。
?2?飛棋鳩協朔會念駁議潤泣葎匐徨潤泣?夸匆嗤曾嶽秤趨?
? 飛p->lchild 頁遊潤泣?夸演煽潤崩?
? 飛p->lchild 音頁遊潤泣?夸p 潤泣匯協頁參p->lchild 潤泣葎功議嘔徨峯嶄壓嶄嶄會演煽和議及匯倖潤泣?咀緩p 潤泣匆頁壓乎徨峯嶄梓朔會演煽議及匯倖潤泣。緩扮?飛p->lchild 潤泣嗤恣徨峯? 夸侭孀潤泣壓朔會和議念駁潤泣議仇峽葎p->lchild->lchild?飛p->lchild 葎?沫?夸斑p?p->lchild?郡鹸秤趨?2?議登協。
壓嶄會?沫屈我峯貧儖孀潤泣p 議朔會念駁潤泣議麻隈泌和?
BiThrTree IPostPretNode?BiThrTree head,BiThrTree p?
{/*壓嶄會?沫屈我峯貧儖孀潤泣p 議枠會議朔写潤泣?head 葎?沫峯議遊潤泣*/
BiThrTree pre;
if (p->rtag==0) pre=p->rchild;
else { pre=p;
while (pre->ltag==1&& post->rchild!=head) pre=pre->lchild;
pre=pre->lchild;
}
return(pre);
}
麻隈6.18
6?壓嶄會?沫屈我峯貧臥孀峙葎x議潤泣
旋喘壓嶄會?沫屈我峯貧儖孀朔写潤泣才念駁潤泣議麻隈?祥辛參演煽欺屈我峯議侭嗤潤泣。曳泌?枠孀欺梓蝶會演煽議及匯倖潤泣?隼朔壅卆肝臥儂凪朔写?賜枠孀欺梓蝶會演煽議恷朔匯倖潤泣?隼朔壅卆肝臥儂凪念駁。宸劔?屡音喘媚匆音喘弓拷祥辛參恵諒欺屈我峯議侭嗤潤泣。
壓嶄會?沫屈我峯貧臥孀峙葎x 議潤泣?糞嵎貧祥頁壓?沫屈我峯貧序佩演煽?繍恵諒潤泣議荷恬醤悶亟葎椎潤泣議峙嚥x 曳熟議囂鞘。和中公竃凪麻隈?
BiThrTree Search (BiThrTree head,elemtype x)
{/*壓參head 葎遊潤泣議嶄會?沫屈我峯嶄臥孀峙葎x 議潤泣*/BiThrTree p;
p=head->lchild;
while (p->ltag==0&&p!=head) p=p->lchild;
while(p!=head && p->data!=x) p=InPostNode(p);
if (p==head)
{ printf(“Not Found the data!\n”);
return(0);
}
else return(p);
}
麻隈6.19
7?壓嶄會?沫屈我峯貧議厚仟
?沫屈我峯議厚仟頁峺?壓?沫屈我峯嶄峨秘匯倖潤泣賜宀評茅匯倖潤泣。匯違秤趨和?宸乂荷恬嗤辛嬬篤撒圻栖厮嗤議?沫?咀緩?壓俐個峺寞扮?珊俶勣斤?沫恂屢哘議俐個。匯違栖傍?宸倖狛殻議旗勺叱窄嚥嶷仟序佩?沫晒屢揖。宸戦叙網胎匯嶽曳熟酒汽議秤趨?軸壓嶄會?沫屈我峯嶄峨秘匯倖潤泣p?聞万撹葎潤泣s 議嘔頃徨。
和中蛍曾嶽秤趨栖蛍裂?
?1?飛s 議嘔徨峯葎腎?泌夕6.13 (a)侭幣?夸峨秘潤泣p 岻朔撹葎夕6.13 (b)侭幣議秤侘。壓宸嶽秤趨嶄?s 議朔写繍撹葎p 議嶄會朔写?s 撹葎p 議嶄會念駁?遇p 撹葎s 議嘔頃徨。屈我峯嶄凪万何蛍議峺寞才?沫音窟伏延晒。
?2?飛s 議嘔徨峯掲腎?泌夕6.14 (a)侭幣?峨秘潤泣p 岻朔泌夕6.14 (b)侭幣。S 圻栖議嘔徨峯延撹p 議嘔徨峯?喇噐p 短嗤恣徨峯?絞s 撹葎p 議嶄會念駁?p 撹葎s 議嘔頃徨?嗽喇噐s 圻栖議朔写撹葎p 議朔写?咀緩珊勣繍s 圻栖議云栖峺?s 議朔写議恣?沫?個葎峺?p。 和中公竃貧峰荷恬議麻隈。
void InsertThrRight(BiThrTree s,BiThrTree p)
{/*壓嶄會?沫屈我峯嶄峨秘潤泣p 聞凪撹葎潤泣s 議嘔頃徨*/
BiThrTree w;
p->rchild=s->rchild;
p->rtag=s->rtag;
p->lchild=s;
p->ltag=1; /*繍s 延葎p 議嶄會念駁*/
s->rchild=p;
s->rtag=0; /*p 撹葎s 議嘔頃徨*/
if(p->rtag==0) /*輝s 圻栖嘔徨峯音腎扮?孀欺s 議朔写w?延w 葎p 議朔写?p 葎w 議念駁*/
{ w=InPostNode(p);
w->lchild=p;
}
}
麻隈6.20