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