完整代碼:
#include#include#includeusing namespace std;
typedef char ElemType;
typedef struct BiNode {
ElemType data;
BiNode* lchild;
BiNode* rchild;
}BiNode, * BiTree;
//構(gòu)建二叉樹(shù)
BiNode* Create(BiNode* bt) {
static int i = 0;
char ch;
//string str = "AB#D##C##";
//string str = "124##56##7##3##";
//string str = "ABD#G##E##CF###";
string str = "ABD#GH##I##E##CF###";
ch = str[i++];
if (ch == '#')bt = NULL;//建立一棵空樹(shù)
else {
bt = (BiTree)malloc(sizeof(BiNode)); bt->data = ch;//生成一個(gè)結(jié)點(diǎn),數(shù)據(jù)域?yàn)閏h
bt->lchild = Create(bt->lchild);//遞歸建立左子樹(shù)
bt->rchild = Create(bt->rchild);//遞歸建立右子樹(shù)
}
return bt;
}
//采用遞歸算法實(shí)現(xiàn)交換二叉樹(shù)的左右子樹(shù),首先交換b結(jié)點(diǎn)的左孩子的左右子樹(shù),
//然后交換b結(jié)點(diǎn)的右孩子的左右子樹(shù),最后交換b結(jié)點(diǎn)的左右孩子,當(dāng)
//結(jié)點(diǎn)為空時(shí)遞歸結(jié)束(后序遍歷的思想)。算法實(shí)現(xiàn)如下:
void swap(BiTree b) {
//本算法遞歸地交換二叉樹(shù)的左右子樹(shù)
BiTree temp;
if (b) {
swap(b->lchild);//遞歸地交換左子樹(shù)
swap(b->rchild);//遞歸地交換右子樹(shù)
temp = b->lchild;//交換左右孩子結(jié)點(diǎn)
b->lchild = b->rchild;
b->rchild = temp;
}
}
void visit(char c) {
printf("%c",c);
}
void InOrder(BiTree T) {
if (T) {
InOrder(T->lchild);
visit(T->data);
InOrder(T->rchild);
}
}
int main() {
BiTree T = (BiTree)malloc(sizeof(BiNode));
T = Create(T);
printf("交換前的中序遍歷\n");
InOrder(T);
swap(T);
printf("\n交換后的中序遍歷\n");
InOrder(T);
printf("\n");
}
實(shí)驗(yàn)結(jié)果:
用中序遍歷驗(yàn)證二叉樹(shù)所有結(jié)點(diǎn)的左右子樹(shù)交換是否成功!
你是否還在尋找穩(wěn)定的海外服務(wù)器提供商?創(chuàng)新互聯(lián)www.cdcxhl.cn海外機(jī)房具備T級(jí)流量清洗系統(tǒng)配攻擊溯源,準(zhǔn)確流量調(diào)度確保服務(wù)器高可用性,企業(yè)級(jí)服務(wù)器適合批量采購(gòu),新人活動(dòng)首月15元起,快前往官網(wǎng)查看詳情吧
文章題目:C語(yǔ)言實(shí)現(xiàn)把二叉樹(shù)中所有結(jié)點(diǎn)的左、右子樹(shù)進(jìn)行交換的函數(shù)-創(chuàng)新互聯(lián)
本文網(wǎng)址:http://muchs.cn/article4/djgcoe.html
成都網(wǎng)站建設(shè)公司_創(chuàng)新互聯(lián),為您提供網(wǎng)站收錄、軟件開(kāi)發(fā)、網(wǎng)站導(dǎo)航、面包屑導(dǎo)航、標(biāo)簽優(yōu)化、定制網(wǎng)站
聲明:本網(wǎng)站發(fā)布的內(nèi)容(圖片、視頻和文字)以用戶(hù)投稿、用戶(hù)轉(zhuǎn)載內(nèi)容為主,如果涉及侵權(quán)請(qǐng)盡快告知,我們將會(huì)在第一時(shí)間刪除。文章觀點(diǎn)不代表本網(wǎng)站立場(chǎng),如需處理請(qǐng)聯(lián)系客服。電話(huà):028-86922220;郵箱:631063699@qq.com。內(nèi)容未經(jīng)允許不得轉(zhuǎn)載,或轉(zhuǎn)載時(shí)需注明來(lái)源: 創(chuàng)新互聯(lián)
猜你還喜歡下面的內(nèi)容