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

歡迎訪問 生活随笔!

生活随笔

當前位置: 首頁 >

二叉树遍历(代码,分析,汇编)

發布時間:2023/12/1 30 豆豆
生活随笔 收集整理的這篇文章主要介紹了 二叉树遍历(代码,分析,汇编) 小編覺得挺不錯的,現在分享給大家,幫大家做個參考.

目錄:

    • 代碼:
    • 分析:
    • 匯編:

代碼:

BTree.h
BTree.c
二叉樹(多路平衡搜索樹)

LinkQueue.h

#ifndef _LINKQUEUE_H_ #define _LINKQUEUE_H_typedef void LinkQueue;//定義隊列類型LinkQueue* LinkQueue_Create();//聲明創建隊列函數void LinkQueue_Destroy(LinkQueue* queue);//聲明銷毀隊列函數void LinkQueue_Clear(LinkQueue* queue);//聲明清空隊列函數int LinkQueue_Append(LinkQueue* queue, void* item);//聲明添加進隊函數void* LinkQueue_Retrieve(LinkQueue* queue);//聲明出隊函數void* LinkQueue_Header(LinkQueue* queue);//聲明獲取頭元素函數int LinkQueue_Length(LinkQueue* queue);//聲明獲取長度函數#endif

LinkQueue.c

#include <malloc.h> #include <stdio.h> #include "LinkQueue.h"typedef struct _tag_LinkQueueNode TLinkQueueNode;//定義隊列節點類型 struct _tag_LinkQueueNode {TLinkQueueNode* next;//下節點指針void* item;//節點存儲數據指針 };typedef struct _tag_LinkQueue//定義實際使用隊列類型 {TLinkQueueNode* front;//前節點(頭節點)一直指向第一個節點用于出隊列TLinkQueueNode* rear;//后節點int length;//長度 } TLinkQueue;LinkQueue* LinkQueue_Create() // 定義創建隊列函數 {TLinkQueue* ret = (TLinkQueue*)malloc(sizeof(TLinkQueue));if( ret != NULL )//創建成功{ret->front = NULL;//前節點指向空ret->rear = NULL;//后節點指向空ret->length = 0;//長度設空}return ret;//返回創建隊列 }void LinkQueue_Destroy(LinkQueue* queue) //定義銷毀隊列函數 {LinkQueue_Clear(queue);//先清空隊列free(queue);//釋放隊列空間 }void LinkQueue_Clear(LinkQueue* queue) // 定義清空隊列函數 {while( LinkQueue_Length(queue) > 0 )//將所有節點出隊列操作{LinkQueue_Retrieve(queue);} }int LinkQueue_Append(LinkQueue* queue, void* item) //定義添加進隊列函數 {TLinkQueue* sQueue = (TLinkQueue*)queue;//取得隊列TLinkQueueNode* node = (TLinkQueueNode*)malloc(sizeof(TLinkQueueNode));//創建節點int ret = (sQueue != NULL ) && (item != NULL) && (node != NULL);//如果隊列與數據不為空和創建節點成功if( ret ){node->item = item;//給新建節點賦值存儲數據if( sQueue->length > 0 )//如果隊列當前長度大于0{sQueue->rear->next = node;//樹的后節點的下一個節點指向新建節點sQueue->rear = node;//將新建節點設為樹的后節點,實現每次添加都往連接node->next = NULL;//新建節點的下一個節點設空}else//否則是第一個節點{sQueue->front = node;//樹的前節點指向新建節點sQueue->rear = node;//樹的后節點指向新建節點node->next = NULL;//新節點的下一個節點為空}sQueue->length++;//長度增加}if( !ret )//如果條件不成功{free(node);//釋放新建節點空間}return ret; }void* LinkQueue_Retrieve(LinkQueue* queue) //定義出隊列函數 {TLinkQueue* sQueue = (TLinkQueue*)queue;//取得隊列TLinkQueueNode* node = NULL;void* ret = NULL;if( (sQueue != NULL) && (sQueue->length > 0) )//如果隊列不為空與長度大于0{node = sQueue->front;//取得出隊列節點 sQueue->front = node->next;//將前節點指向出隊列節點的下一個節點ret = node->item;//取得節點存儲數據free(node);//釋放該節點sQueue->length--;//長度減少if( sQueue->length == 0 )//如果是最后一個節點,將隊列重置都為空{sQueue->front = NULL;sQueue->rear = NULL;}}return ret;//返回節點數據 }void* LinkQueue_Header(LinkQueue* queue) // 定義獲取頭節點函數 {TLinkQueue* sQueue = (TLinkQueue*)queue;//取得隊列void* ret = NULL;if( (sQueue != NULL) && (sQueue->length > 0) )//如果隊列不為空與長度大于0{ret = sQueue->front->item;//取得第一個節點存儲數據}return ret;//返回數據 }int LinkQueue_Length(LinkQueue* queue) // 定義獲取長度函數 {TLinkQueue* sQueue = (TLinkQueue*)queue;//取得樹int ret = -1;if( sQueue != NULL ){ret = sQueue->length;//取得長度}return ret;//返回長度 }

main.c

#include <stdio.h> #include <stdlib.h> #include "BTree.h" #include "LinkQueue.h"struct Node//定義節點 {BTreeNode header;char v; };void printf_data(BTreeNode* node)//將節點內容輸出函數 {if( node != NULL ){printf("%c", ((struct Node*)node)->v);} }void pre_order_traversal(BTreeNode* root)// {if( root != NULL ){printf("%c, ", ((struct Node*)root)->v);pre_order_traversal(root->left);pre_order_traversal(root->right);} }void middle_order_traversal(BTreeNode* root) {if( root != NULL ){middle_order_traversal(root->left);printf("%c, ", ((struct Node*)root)->v);middle_order_traversal(root->right);} }void post_order_traversal(BTreeNode* root) {if( root != NULL ){post_order_traversal(root->left);post_order_traversal(root->right);printf("%c, ", ((struct Node*)root)->v);} }void level_order_traversal(BTreeNode* root) {printf("==%c\n", ((struct Node*)root)->v);if( root != NULL ){LinkQueue* queue = LinkQueue_Create();//創建隊列if( queue != NULL )//創建成功{LinkQueue_Append(queue, root);//將節點進隊列while( LinkQueue_Length(queue) > 0 ){struct Node* node = (struct Node*)LinkQueue_Retrieve(queue);//出隊列printf("%c, ", node->v);//輸出節點存儲的數據LinkQueue_Append(queue, node->header.left);//將左子節點進隊列LinkQueue_Append(queue, node->header.right);//將右子節點進隊列}}LinkQueue_Destroy(queue);} }int main(int argc, char *argv[]) {BTree* tree = BTree_Create();struct Node n1 = {{NULL, NULL}, 'A'};struct Node n2 = {{NULL, NULL}, 'B'};struct Node n3 = {{NULL, NULL}, 'C'};struct Node n4 = {{NULL, NULL}, 'D'};struct Node n5 = {{NULL, NULL}, 'E'};struct Node n6 = {{NULL, NULL}, 'F'};BTree_Insert(tree, (BTreeNode*)&n1, 0, 0, 0);BTree_Insert(tree, (BTreeNode*)&n2, 0x00, 1, 0);BTree_Insert(tree, (BTreeNode*)&n3, 0x01, 1, 0);BTree_Insert(tree, (BTreeNode*)&n4, 0x00, 2, 0);BTree_Insert(tree, (BTreeNode*)&n5, 0x02, 2, 0);BTree_Insert(tree, (BTreeNode*)&n6, 0x02, 3, 0);printf("Full Tree: \n");BTree_Display(tree, printf_data, 4, '-');printf("Pre Order Traversal:\n");pre_order_traversal(BTree_Root(tree));//輸出:ABDEFCprintf("\n");printf("Middle Order Traversal:\n");middle_order_traversal(BTree_Root(tree));//輸出:DBFEACprintf("\n");printf("Post Order Traversal:\n");post_order_traversal(BTree_Root(tree));//輸出:DFEBCAprintf("\n");printf("Level Order Traversal:\n");level_order_traversal(BTree_Root(tree));//輸出:ABCDEFprintf("\n");BTree_Destroy(tree);getchar();return 0; }

分析:

LinkQueue :






main中的調用函數過程:




















匯編:













創作挑戰賽新人創作獎勵來咯,堅持創作打卡瓜分現金大獎

總結

以上是生活随笔為你收集整理的二叉树遍历(代码,分析,汇编)的全部內容,希望文章能夠幫你解決所遇到的問題。

如果覺得生活随笔網站內容還不錯,歡迎將生活随笔推薦給好友。

主站蜘蛛池模板: 久久久久久999 | 国产丰满大乳奶水在线视频 | 国产毛片久久久久久 | 久久不卡 | 日本久操视频 | 久久男人天堂 | 国产夫妻自拍小视频 | 精品国产免费观看 | 欧美激情一二三区 | 在线看www| 成年人在线视频 | 国产久草视频 | 日韩成人av电影 | 国产人妖在线视频 | 日韩精品一二 | 床上激情网站 | 四虎成人免费视频 | 久久人人爽人人人人片 | 凹凸精品一区二区三区 | 浪漫樱花在线观看高清动漫 | 亚洲福利社 | 欧美日韩激情在线一区二区三区 | a级片免费观看 | 久久精品国产亚洲av麻豆蜜芽 | 内射一区二区三区 | 国产男女无套 | 国产一级二级在线 | 国产亚洲精品久 | 一起草国产 | 亚洲精品乱码久久久久久写真 | 国产精品久久久精品三级 | 这里只有久久精品 | 国内视频精品 | 久久无码高潮喷水 | 可以看黄色的网站 | 亚洲欧美在线视频 | 女王脚交玉足榨精调教 | 亚洲日本护士毛茸茸 | 成人污污视频 | 97免费观看视频 | 沈樵精品国产成av片 | 桃色激情网 | 高h喷汁呻吟3p | 欧美日韩国产网站 | 欧美 日韩 国产 在线观看 | 日韩免费高清一区二区 | 日本成人网址 | 精品亚洲永久免费精品 | 欧美在线91 | 永久av免费在线观看 | 奇米影视一区二区三区 | 天堂网2014 | 91精品国产乱码久久久久久久久 | 国产a免费观看 | 绿帽在线 | 放荡闺蜜高h季红豆h | 国产片一区二区三区 | 性xxxx搡xxxxx搡欧美 | 一道本一区 | 特级精品毛片免费观看 | 国产精品成人免费视频 | 日韩av电影网站 | 国产精品女教师 | 久久av网站 | 国产精彩视频一区 | 体内精视频xxxxx | av乱码| 在线免费看av | 中文字幕一区二区三区夫目前犯 | 久久夜色精品国产欧美乱 | 在线观看国产免费视频 | 日日噜噜噜噜久久久精品毛片 | 综合激情伊人 | 91精品国自产在线偷拍蜜桃 | 九九热视频这里只有精品 | 欧美国产不卡 | 亚洲欧洲在线视频 | 爱情岛成人 | 国产精品久久久一区二区 | 天天舔天天干 | 女女调教被c哭捆绑喷水百合 | 国产黄色激情视频 | 三级小说视频 | 欧美一级黄色录像 | 久久国产视频精品 | 黄色免费看视频 | 在线观看v片 | 中国女人性猛交 | 亚洲四区在线 | 夜夜操夜夜爱 | 麻豆精品国产精华精华液好用吗 | 日韩精品在线一区二区 | 受虐m奴xxx在线观看 | 激情午夜视频 | 亚洲精品无码久久久久久久 | 精品成人中文无码专区 | 国产真实乱人偷精品视频 | 亚洲精品伊人 | 自拍在线视频 |