中文亚洲精品无码_熟女乱子伦免费_人人超碰人人爱国产_亚洲熟妇女综合网

當(dāng)前位置: 首頁(yè) > news >正文

濟(jì)南公司做網(wǎng)站貴州網(wǎng)站seo

濟(jì)南公司做網(wǎng)站,貴州網(wǎng)站seo,h5css3做網(wǎng)站首頁(yè),wap是什么意思的縮寫(xiě)二叉樹(shù)層次建樹(shù) 對(duì)于二叉樹(shù),建樹(shù)過(guò)程中需要一個(gè)(尾插法的)鏈表(或隊(duì)列)來(lái)輔助確認(rèn)當(dāng)前父親節(jié)點(diǎn) 由于尾插法需要一個(gè)尾指針。因此可以理解為隊(duì)列,只不過(guò)是不帶頭結(jié)點(diǎn)的鏈表版隊(duì)列。 但其實(shí)就是一個(gè)輔助找…

二叉樹(shù)層次建樹(shù)

對(duì)于二叉樹(shù),建樹(shù)過(guò)程中需要一個(gè)(尾插法的)鏈表(或隊(duì)列)來(lái)輔助確認(rèn)當(dāng)前父親節(jié)點(diǎn)

由于尾插法需要一個(gè)尾指針。因此可以理解為隊(duì)列,只不過(guò)是不帶頭結(jié)點(diǎn)的鏈表版隊(duì)列。

但其實(shí)就是一個(gè)輔助找到當(dāng)前父親節(jié)點(diǎn)的作用,不必糾結(jié)是啥名字。

代碼如下:

#include<stdio.h>
#include<stdlib.h>
typedef char ElemType;
//樹(shù)結(jié)構(gòu)體
typedef struct tree_node{ElemType val;struct tree_node*lc;struct tree_node*rc;
}Tnode,*BTree;//鏈表
typedef struct link{BTree tree;//存儲(chǔ)的是樹(shù)的節(jié)點(diǎn)struct link*next;
}LinkNode,*LinkList;void build_tree(BTree&tree,LinkList&front,LinkList& rear)
{//還需要一個(gè)指向當(dāng)前父親節(jié)點(diǎn)的指針LinkList cur = NULL;ElemType data;while(scanf("%c",&data) && data != '\n'){//每次來(lái)一個(gè)新建一個(gè)樹(shù)的節(jié)點(diǎn)和鏈表的節(jié)點(diǎn)BTree newTree = (BTree)calloc(1,sizeof(Tnode));LinkList newList = (LinkList)calloc(1,sizeof(LinkNode));newTree->val = data;newList->tree=newTree;//進(jìn)行判讀是不是父親節(jié)點(diǎn)if(tree == NULL){tree = newTree;//入隊(duì)front = rear = newList;cur=rear;}else{if(cur->tree->lc == NULL){//插入左子樹(shù)cur->tree->lc=newTree;//入隊(duì)并更新尾指針rear->next=newList;rear = rear->next;}else{cur->tree->rc = newTree;//入隊(duì)并更新尾指針rear->next=newList;rear = rear->next;//注意這里左右子樹(shù)都滿(mǎn)了,當(dāng)前父親節(jié)點(diǎn)要換cur= cur->next;}}}
}//前序便利
void pre_print(BTree tree)
{if(tree){putchar(tree->val);pre_print(tree->lc);pre_print(tree->rc);}
}
void mid_print(BTree tree)
{if(tree){//左跟右mid_print(tree->lc);putchar(tree->val);mid_print(tree->rc);}
}
void post_print(BTree tree)
{if(tree){//左右跟post_print(tree->lc);post_print(tree->rc);putchar(tree->val);}
}
int main()
{BTree tree = NULL;//樹(shù)根LinkList front=NULL;LinkList rear=NULL;//需要用到尾插法build_tree(tree,front,rear);pre_print(tree);puts("");mid_print(tree);puts("");post_print(tree);return 0;
}

前序便利:根左右--->先打印自身再左子樹(shù)再右子樹(shù)

//前序便利
void pre_print(BTree tree)
{if(tree){putchar(tree->val);pre_print(tree->lc);pre_print(tree->rc);}
}

中序遍歷:左根右--->先打印左子樹(shù)再打印自身再右子樹(shù)


void mid_print(BTree tree)
{if(tree){//左跟右mid_print(tree->lc);putchar(tree->val);mid_print(tree->rc);}
}

后序遍歷:左右根--->先打印左子樹(shù)再右子樹(shù)再自身


void post_print(BTree tree)
{if(tree){//左右跟post_print(tree->lc);post_print(tree->rc);putchar(tree->val);}
}

【注意】以上三中便利采用遞歸思想。?

代碼運(yùn)行結(jié)果如下

封裝思想展示,隊(duì)列封裝

#include<stdio.h>
#include<stdlib.h>
typedef char ElemType;//樹(shù)
typedef struct trees{ElemType data;struct trees*lc;struct trees*rc;
}treeNode,*Tree;//鏈表
typedef struct Links{Tree tree;struct Links*next;
}LNode,*LinkList;//隊(duì)列
typedef struct{LinkList front;LinkList rear;
}LinkQue;void init_que(LinkQue&q)
{q.front=q.rear=(LinkList)calloc(1,sizeof(LNode));q.front=q.rear;
}bool isEmpty(LinkQue&q)
{return q.front == q.rear;
}//入隊(duì)
void push_que(LinkQue&q,Tree tree)
{//新建鏈表節(jié)點(diǎn)LinkList newList = (LinkList)calloc(1,sizeof(LNode));newList->next=NULL;newList->tree=tree;q.rear->next=newList;q.rear=q.rear->next;
}
bool pop_que(LinkQue&q,Tree &tree)
{if(isEmpty(q)){return false;}LinkList del = q.front->next;//頭結(jié)點(diǎn)不存數(shù)據(jù),第一個(gè)節(jié)點(diǎn)才是真的數(shù)據(jù)起始位置q.front->next=del->next;//斷鏈tree=del->tree;if(q.rear == del)//只剩下尾節(jié)點(diǎn)的數(shù)據(jù){q.rear=q.front;//置空}free(del);return true;
}void build_tree(Tree&tree)
{LinkQue q;init_que(q);LinkList cur = NULL;ElemType data;while(scanf("%c",&data) && data != '\n'){Tree newTree = (Tree)calloc(1,sizeof(treeNode));//申請(qǐng)新的樹(shù)的節(jié)點(diǎn)newTree->data=data;if(tree == NULL){tree = newTree;push_que(q,tree);//入隊(duì)cur = q.rear;}else{if(cur->tree->lc == NULL){cur->tree->lc = newTree;push_que(q,newTree);}else{cur->tree->rc = newTree;push_que(q,newTree);//改變當(dāng)前父親節(jié)點(diǎn)cur = cur->next;}}}
}void pre_print(Tree t)
{if(t){putchar(t->data);pre_print(t->lc);pre_print(t->rc);}
}
void mid_print(Tree t)
{if(t){mid_print(t->lc);putchar(t->data);mid_print(t->rc);}
}
void post_print(Tree t)
{if(t){post_print(t->lc);post_print(t->rc);putchar(t->data);}
}int main()
{Tree tree = NULL;build_tree(tree);// pre_print(tree);return 0;
}

層次遍歷在下節(jié)

http://www.risenshineclean.com/news/50527.html

相關(guān)文章:

  • 網(wǎng)站建設(shè)運(yùn)營(yíng)怎么辦seo網(wǎng)絡(luò)營(yíng)銷(xiāo)推廣公司深圳
  • 學(xué)做電商網(wǎng)站設(shè)計(jì)app開(kāi)發(fā)公司推薦
  • 陜西咸陽(yáng)建設(shè)銀行網(wǎng)站百度域名提交收錄網(wǎng)址
  • wordpress 顯示瀏覽量為什么seo工資不高
  • 如何在自己網(wǎng)站上做支付寶公司做網(wǎng)站推廣
  • 做網(wǎng)站的屬于什么工作類(lèi)型女教師遭網(wǎng)課入侵直播錄屏曝光視頻
  • wordpress去水印北京seo公司華網(wǎng)白帽
  • 鞏義企業(yè)網(wǎng)站托管服務(wù)商百度分析工具
  • 企業(yè)網(wǎng)站建設(shè)上海seo搜索引擎優(yōu)化方案
  • 深圳外貿(mào)網(wǎng)站優(yōu)化黃金網(wǎng)站app大全
  • django 網(wǎng)站開(kāi)發(fā)視頻教程軟件開(kāi)發(fā)網(wǎng)
  • 四川設(shè)計(jì)公司seo運(yùn)營(yíng)培訓(xùn)
  • 網(wǎng)站收錄了但是搜索不到軟文寫(xiě)作
  • 臨平做網(wǎng)站鄭州seo顧問(wèn)阿亮
  • 鄭州做網(wǎng)站云極品牌推廣公司
  • 軟件開(kāi)發(fā)步驟及周期長(zhǎng)沙優(yōu)化網(wǎng)站廠家
  • 韓國(guó)購(gòu)物網(wǎng)站廣告素材
  • 宿州商務(wù)網(wǎng)站建設(shè)網(wǎng)站關(guān)鍵詞優(yōu)化有用嗎
  • java畢業(yè)設(shè)計(jì)網(wǎng)站建設(shè)培訓(xùn)網(wǎng)址大全
  • 公司建站比較好的金華網(wǎng)站建設(shè)
  • 專(zhuān)門(mén)做車(chē)評(píng)的網(wǎng)站電商網(wǎng)站建設(shè)價(jià)格
  • 網(wǎng)站內(nèi)容建設(shè)的原則是什么意思百度的企業(yè)網(wǎng)站
  • 上海企業(yè)建設(shè)網(wǎng)站成人職業(yè)技術(shù)培訓(xùn)學(xué)校
  • 個(gè)人網(wǎng)頁(yè)設(shè)計(jì)大全廈門(mén)seo排名優(yōu)化
  • 長(zhǎng)治網(wǎng)站建設(shè)收費(fèi)多少2022最好的百度seo
  • 上海百度地圖百度快速seo軟件
  • 網(wǎng)站建設(shè)優(yōu)化文章重慶今日頭條新聞消息
  • 石家莊免費(fèi)做網(wǎng)站杭州seo公司
  • 哈爾濱做設(shè)計(jì)和網(wǎng)站的公司嗎電話營(yíng)銷(xiāo)外包公司
  • 地方門(mén)戶(hù)網(wǎng)站模板seo教程seo優(yōu)化