日韩性视频-久久久蜜桃-www中文字幕-在线中文字幕av-亚洲欧美一区二区三区四区-撸久久-香蕉视频一区-久久无码精品丰满人妻-国产高潮av-激情福利社-日韩av网址大全-国产精品久久999-日本五十路在线-性欧美在线-久久99精品波多结衣一区-男女午夜免费视频-黑人极品ⅴideos精品欧美棵-人人妻人人澡人人爽精品欧美一区-日韩一区在线看-欧美a级在线免费观看

歡迎訪問(wèn) 生活随笔!

生活随笔

當(dāng)前位置: 首頁(yè) > 编程资源 > 编程问答 >内容正文

编程问答

C语言 数据结构 二叉树实现、二叉树的三种递归遍历

發(fā)布時(shí)間:2024/2/28 编程问答 40 豆豆
生活随笔 收集整理的這篇文章主要介紹了 C语言 数据结构 二叉树实现、二叉树的三种递归遍历 小編覺(jué)得挺不錯(cuò)的,現(xiàn)在分享給大家,幫大家做個(gè)參考.

二叉樹(shù)

在計(jì)算機(jī)科學(xué)中,二叉樹(shù)(英語(yǔ):Binary tree)是每個(gè)節(jié)點(diǎn)最多只有兩個(gè)分支(即不存在分支度大于2的節(jié)點(diǎn))的樹(shù)結(jié)構(gòu)。通常分支被稱(chēng)作“左子樹(shù)”或“右子樹(shù)”。二叉樹(shù)的分支具有左右次序,不能隨意顛倒。

二叉樹(shù)的遍歷:

前序遍歷、中序遍歷、后續(xù)遍歷

以下代碼的二叉樹(shù)圖形表示

代碼

#define _CRT_SECURE_NO_WARNINGS #include<stdio.h> #include<stdlib.h> #include<string.h> #define N 10 typedef struct tag {char c;//數(shù)的一個(gè)節(jié)點(diǎn)包含多個(gè)數(shù)據(jù)類(lèi)型,可定義結(jié)構(gòu)體,賦值時(shí)用memcopystruct tag *pleft;struct tag *pright; }Node, *pNode; //前序遍歷:if中要打印的放前面 void preOrder(pNode p) {if (p != NULL){putchar(p->c);//等價(jià)于printf("%c",c);preOrder(p->pleft);preOrder(p->pright);} } //中序遍歷:if中要打印的放中間 void midOrder(pNode p) {if (p != NULL){midOrder(p->pleft);putchar(p->c);midOrder(p->pright);} }//后序遍歷:if中要打印的放后面 void latOrder(pNode p) {if (p != NULL){latOrder(p->pleft);latOrder(p->pright);putchar(p->c);} } int main() {char c[N + 1] = "ABCDEFGHIJ";pNode p[N];//一共有N個(gè)節(jié)點(diǎn),p[N]用于存儲(chǔ)每一個(gè)節(jié)點(diǎn)的地址值pNode tree;//樹(shù)的頭指針int i, j;for (i = 0; i < N; i++)//把每個(gè)字母都放進(jìn)樹(shù)的節(jié)點(diǎn)中{p[i] = (pNode)calloc(1, sizeof(Node));p[i]->c = c[i];}tree = p[0];//樹(shù)的頭指針(樹(shù)根)//以下實(shí)現(xiàn)節(jié)點(diǎn)的連結(jié):廣度優(yōu)先遍歷for (i = 0; i < N; i++)//外層循環(huán)控制往樹(shù)坑里放的節(jié)點(diǎn){for (j = 0; j < i; j++)//內(nèi)層循環(huán)找空閑的樹(shù)坑,放入節(jié)點(diǎn){if (NULL == p[j]->pleft){p[j]->pleft = p[i];break;}if (NULL == p[j]->pright){p[j]->pright = p[i];break;}}}//遍歷打印preOrder(p[0]);//前序遍歷printf("\n");midOrder(p[0]);//中序遍歷printf("\n");latOrder(p[0]);//后序遍歷printf("\n");system("pause"); }

輸出

ABDHIEJCFG HDIBJEAFCG HIDJEBFGCA 請(qǐng)按任意鍵繼續(xù). . .

VS2017查看監(jiān)視

總結(jié)

以上是生活随笔為你收集整理的C语言 数据结构 二叉树实现、二叉树的三种递归遍历的全部?jī)?nèi)容,希望文章能夠幫你解決所遇到的問(wèn)題。

如果覺(jué)得生活随笔網(wǎng)站內(nèi)容還不錯(cuò),歡迎將生活随笔推薦給好友。