C语言递归实现二叉树(二叉链表)的三种遍历和销毁操作(实验)
生活随笔
收集整理的這篇文章主要介紹了
C语言递归实现二叉树(二叉链表)的三种遍历和销毁操作(实验)
小編覺得挺不錯的,現(xiàn)在分享給大家,幫大家做個參考.
今天寫的是二叉樹操作的實驗,這個實驗有三個部分:
①建立二叉樹,采用二叉鏈表結(jié)構(gòu)
②先序、中序、后續(xù)遍歷二叉樹,輸出節(jié)點值
③銷毀二叉樹
?
二叉樹的節(jié)點結(jié)構(gòu)定義
typedef struct BiTNode //二叉樹的節(jié)點結(jié)構(gòu) {char data; //此處用char 因為數(shù)據(jù)設(shè)用字母struct BiTNode * Lchild, * Rchild; //左右孩子指針 } BiTree;
基本操作函數(shù)定義部分
BiTree * CreateBiTree(BiTree * T); //創(chuàng)建二叉樹 void PreOrderT(BiTree * T); //先序遍歷 void InOrderT(BiTree * T); //中序遍歷 void PostOrder(BiTree * T); //后序遍歷 void DestroyBiTree(BiTree * T); //銷毀二叉樹
?函數(shù)實現(xiàn)部分
BiTree * CreateBiTree(BiTree * T) {char ch;scanf("%c",&ch);if(ch=='#')return 0; //輸入#表示為空節(jié)點//因為傳進來的參數(shù)是一個樹節(jié)點的指針,所以下面這句代碼可以理解成實例化該指針指向的樹節(jié)點T =(BiTree *)malloc(sizeof(BiTree));T->data=ch; //給節(jié)點的數(shù)據(jù)域賦值T->Lchild=CreateBiTree(T->Lchild); //遞歸創(chuàng)建左子樹T->Rchild=CreateBiTree(T->Rchild); //遞歸創(chuàng)建右子樹return T; } void PreOrderT(BiTree * T) {if(T) //如果該樹節(jié)點存在{printf("%c",T->data); //先序遍歷PreOrderT(T->Lchild);PreOrderT(T->Rchild);} } void InOrderT(BiTree * T) {if(T) //如果該樹節(jié)點存在{InOrderT(T->Lchild); //中序遍歷printf("%c",T->data);InOrderT(T->Rchild);} } void PostOrder(BiTree * T) {if(T) //如果該樹節(jié)點存在{PostOrder(T->Lchild);PostOrder(T->Rchild);printf("%c",T->data);} } void DestroyBiTree(BiTree * T) {if(T) //如果T存在{DestroyBiTree(T->Lchild);DestroyBiTree(T->Rchild);free(T);} }
?
主函數(shù)測試部分
int main(void) {BiTree * T; //先定義一個樹節(jié)點指針,指向第一個樹節(jié)點,也就是根節(jié)點printf("請輸入二叉樹的數(shù)據(jù),并以#為空節(jié)點\n");T=CreateBiTree(T);printf("該樹的先序遍歷結(jié)果為:");PreOrderT(T);printf("\n");printf("該樹的中序遍歷結(jié)果為:");InOrderT(T);printf("\n");printf("該樹的后序遍歷結(jié)果為:");PostOrder(T);printf("\n");DestroyBiTree(T);return 0; }效果圖:
好了,這天真冷。。。呼呼
gg,又不夠字數(shù),老規(guī)矩,湊字數(shù)
山不在高,有仙則名。水不在深,有龍則靈。斯是陋室,惟吾德馨。苔痕上階綠,草色入簾青。談笑有鴻儒,往來無白丁。可以調(diào)素琴,閱金經(jīng)。無絲竹之亂耳,無案牘之勞形。南陽諸葛廬,西蜀子云亭。孔子云:何陋之有?
轉(zhuǎn)載于:https://www.cnblogs.com/yellowgg/p/7856950.html
創(chuàng)作挑戰(zhàn)賽新人創(chuàng)作獎勵來咯,堅持創(chuàng)作打卡瓜分現(xiàn)金大獎總結(jié)
以上是生活随笔為你收集整理的C语言递归实现二叉树(二叉链表)的三种遍历和销毁操作(实验)的全部內(nèi)容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: 做梦梦到买衣服试衣服是什么意思
- 下一篇: 常常梦到一个人怎么回事