亚洲香蕉成人av网站在线观看_欧美精品成人91久久久久久久_久久久久久久久久久亚洲_热久久视久久精品18亚洲精品_国产精自产拍久久久久久_亚洲色图国产精品_91精品国产网站_中文字幕欧美日韩精品_国产精品久久久久久亚洲调教_国产精品久久一区_性夜试看影院91社区_97在线观看视频国产_68精品久久久久久欧美_欧美精品在线观看_国产精品一区二区久久精品_欧美老女人bb

首頁 > 編程 > C++ > 正文

使用C語言構(gòu)建基本的二叉樹數(shù)據(jù)結(jié)構(gòu)

2020-05-23 14:15:55
字體:
供稿:網(wǎng)友

這篇文章主要介紹了使用C語言使用C語言構(gòu)建基本的二叉樹數(shù)據(jù)結(jié)構(gòu),包括根據(jù)前序序列和中序序列構(gòu)建二叉樹的方法,需要的朋友可以參考下

二叉樹結(jié)構(gòu)常用的一些初始化代碼

 

 
  1. #include 
  2. #include 
  3.  
  4. typedef struct Node{ 
  5. int data; 
  6. Node *leftchild; 
  7. Node *rightchild; 
  8. }Node; 
  9.  
  10.  
  11. /* 
  12. 初始化一棵二叉樹排序樹。 
  13. */ 
  14. void InitBinaryTree(Node**root,int elem) 
  15. *root=(Node*)malloc(sizeof(Node)); 
  16. if(!(*root)) 
  17. printf("Memory allocation for root failed./n"); 
  18. return
  19. (*root)->data=elem; 
  20. (*root)->leftchild=NULL; 
  21. (*root)->rightchild=NULL; 
  22.  
  23. /* 
  24. 向二叉樹排序樹中插入節(jié)點。 
  25. */ 
  26. void InsertNode(Node *root,int elem) 
  27. Node *newnode=NULL; 
  28. Node *p=root,*last_p=NULL; 
  29.  
  30. newnode=(Node*)malloc(sizeof(Node)); 
  31. if(!newnode) 
  32. printf("Memory allocation for newnode failed./n"); 
  33. return
  34. newnode->data=elem; 
  35. newnode->leftchild=NULL; 
  36. newnode->rightchild=NULL; 
  37.  
  38. while(NULL!=p) 
  39. last_p=p; 
  40. if(newnode->datadata) 
  41. p=p->leftchild; 
  42. else if(newnode->data>p->data) 
  43. p=p->rightchild; 
  44. else 
  45. printf("Node to be inserted has existed./n"); 
  46. free(newnode); 
  47. return
  48. p=last_p; 
  49. if(newnode->datadata) 
  50. p->leftchild=newnode; 
  51. else 
  52. p->rightchild=newnode; 
  53.  
  54. /* 
  55. 創(chuàng)建一棵二叉樹排序樹。 
  56. */ 
  57. void CreatBinarySearchTree(Node **root,int data[],int num) 
  58. int i; 
  59.  
  60. for(i=0;i 
  61. if(NULL==*root) 
  62. InitBinaryTree(root,data[i]); 
  63. else 
  64. InsertNode(*root,data[i]); 

根據(jù)前序序列、中序序列構(gòu)建二叉樹

函數(shù)定義

 

 
  1. bt rebuildTree(char *pre, char *inint len);  

參數(shù):

* pre:前序遍歷結(jié)果的字符串數(shù)組

* in:中序遍歷結(jié)果的字符串數(shù)組

len : 樹的長度

例如:

前序遍歷結(jié)果: a b c d e f g h

中序遍歷結(jié)果: c b e d f a g h

算法思想

遞歸思想,遞歸的終止條件是樹的長度len == 0

在中序遍歷的數(shù)組中找到前序數(shù)組的第一個字符,記錄在中序數(shù)組中的位置index.如果找不到,說明前序遍歷數(shù)組和中序遍歷數(shù)組有問題,提示錯誤信息,退出程序即可;找到index后,新建一個二叉樹節(jié)點t,t->item = *pre,然后遞歸的求t的左孩子和有孩子

遞歸的左孩子:void rebuildTree(pre + 1, in, index)

遞歸的右孩子:void rebuildTree(pre + (index + 1), in + (index + 1), len - (index + 1))

實現(xiàn)代碼(c語言版)

 

 
  1. /**  
  2. * Description:根據(jù)前序和中序構(gòu)建二叉樹  
  3. */ 
  4. bt rebuildTree(char *pre, char *inint len)  
  5. {  
  6. bt t;  
  7. if(len <= 0)  
  8. {  
  9. //遞歸終止  
  10. t = NULL;  
  11. }else 
  12. {  
  13. //遞歸主體  
  14. int index = 0;  
  15.  
  16. while(index < len && *(pre) != *(in + index))  
  17. {  
  18. index ++;  
  19. }  
  20.  
  21. if(index >= len)  
  22. {  
  23. printf("前序遍歷或者中序遍歷數(shù)組有問題!/n");  
  24. exit(-1);  
  25. }  
  26.  
  27. t = (struct bintree *)malloc(sizeof(struct bintree));  
  28. t->item = *pre;  
  29. t->lchild = rebuildTree(pre + 1, in, index);  
  30. t->rchild = rebuildTree(pre + (index + 1), in + (index + 1), len - (index + 1));  
  31. }  
  32. return t;  
  33. }  

根據(jù)中序序列、后序序列構(gòu)建二叉樹

函數(shù)定義

 

 
  1. /**  
  2. * 中序、后序序列構(gòu)建二叉樹  
  3. */ 
  4. btree* rebuildTree(char *order, char *post, int len);  

算法思想

中序序列:C、B、E、D、F、A、H、G、J、I

后序序列:C、E、F、D、B、H、J、I、G、A

遞歸思路:

根據(jù)后序遍歷的特點,知道后序遍歷最后一個節(jié)點為根節(jié)點,即為A

觀察中序遍歷,A左側(cè)CBEDF為A左子樹節(jié)點,A后側(cè)HGJI為A右子樹節(jié)點

然后遞歸的構(gòu)建A的左子樹和后子樹

實現(xiàn)代碼(c代碼)

 

 
  1. /**  
  2. * 根據(jù)中序和后序序列構(gòu)建二叉樹  
  3. * (ps:昨晚參加阿里筆試,等到最后說可以免筆試直接面試,今天估計還是要根據(jù)學校篩選,哈哈,為了這點  
  4. * 也得參加阿里筆試,不能讓自己的學校受到鄙視)  
  5. */ 
  6.  
  7. #include <stdio.h>  
  8. #include <stdlib.h>  
  9. #include <string.h>  
  10.  
  11. int n;  
  12.  
  13. typedef struct btree {  
  14. struct btree *lchild;  
  15. struct btree *rchild;  
  16. char data;  
  17. } btree;  
  18.  
  19. /**  
  20. * 中序、后序序列構(gòu)建二叉樹  
  21. */ 
  22. btree* rebuildTree(char *order, char *post, int len)  
  23. {  
  24. btree *t;  
  25.  
  26. if (len <= 0) {  
  27. return NULL;  
  28. else {  
  29. int index = 0;  
  30.  
  31. while (index < len && *(post + len - 1) != *(order + index)) {  
  32. index ++;  
  33. }  
  34.  
  35. t = (btree *)malloc(sizeof(btree));  
  36. t->data = *(order + index);  
  37. t->lchild = rebuildTree(order, post, index);  
  38. t->rchild = rebuildTree(order + index + 1, post + index, len - (index + 1));  
  39. }  
  40.  
  41. return t;  
  42. }  
  43.  
  44. /**  
  45. * 前序遍歷二叉樹  
  46. */ 
  47. void preTraverse(btree *t)  
  48. {  
  49. if (t) {  
  50. printf("%c ", t->data);  
  51. preTraverse(t->lchild);  
  52. preTraverse(t->rchild);  
  53. }  
  54. }  
  55.  
  56. int main(void)  
  57. {  
  58. int i;  
  59. char *post, *order;  
  60. btree *t;  
  61.  
  62. while (scanf("%d", &n) != EOF) {  
  63. post = (char *)malloc(n);  
  64. order = (char *)malloc(n);  
  65.  
  66. getchar();  
  67. for (i = 0; i < n; i ++)  
  68. scanf("%c", order + i);  
  69.  
  70. getchar();  
  71. for (i = 0; i < n; i ++)  
  72. scanf("%c", post + i);  
  73.  
  74. t = rebuildTree(order, post, n);  
  75.  
  76. preTraverse(t);  
  77. printf("/n");  
  78.  
  79. free(post);  
  80. free(order);  
  81.  
  82. }  
  83.  
  84. return 0;  
  85. }  

發(fā)表評論 共有條評論
用戶名: 密碼:
驗證碼: 匿名發(fā)表
色诱女教师一区二区三区| 日韩精品一区二区三区在线播放| 亚洲美女av在线播放| 亚洲欧洲国产日韩精品| 国产精品女主播一区二区三区| www.亚洲色图| 中文一区一区三区高中清不卡免费| 亚洲日本欧美中文幕| 欧美激情按摩在线| 久久国产乱子伦精品| 亚欧激情乱码久久久久久久久| 久久精品xxxxx| 亚洲桃色在线一区| 夜夜春成人影院| 在线免费av网站| 久久精品综合| 在线国产91| 噜噜噜久久,亚洲精品国产品| 91女人18毛片水多国产| 美女翘臀白浆直流视频| 一级黄色片免费看| 亚洲精品国产品国语在线app| 国产sm调教视频| 国产精品久久精品国产| 先锋影音在av资源看片| 四季av日韩精品一区| 在线heyzo| 国产日韩一区二区三区| 又粗又硬又爽国产视频| 日韩欧美一级二级三级久久久| 亚洲另类在线一区| 精品午夜福利视频| 欧美精品成人一区二区在线观看| 91久久久久久白丝白浆欲热蜜臀| 91污在线观看| 亚洲 中文字幕 日韩 无码| 亚洲男女在线观看| 最近中文字幕mv免费高清视频8| 国产欧美日韩一区二区三区在线| 久久一区二区精品| 欧美不卡在线| 中文字幕亚洲高清| 欧美日韩国产成人| 欧美极品少妇xxxxⅹ喷水| 欧美激情一区二区三区高清视频| 爱搞国产精品| 国产传媒视频在线| 日本黄色不卡视频| 亚洲最大免费视频| 国产精品一二| 欧美日韩高清一区| 国产精品v欧美精品v日本精品动漫| 国产在线xxx| 午夜小视频福利在线观看| www在线视频观看| 亚洲av无码国产精品永久一区| 国产手机视频一区二区| 久久一区二区电影| 亚洲欧美日韩成人| www亚洲欧美| 成人黄在线观看| 欧美一区视频在线| 四虎成人精品在永久免费| 国产亚洲欧美一区二区| 国产精品美女999| 性娇小13――14欧美| 国产日韩av网站| 阿v天堂2018| 久久亚洲欧美| 91在线观看免费| 91美女在线视频| 日韩福利一区二区三区| 欧美最猛性xxxxx(亚洲精品)| 午夜视频免费在线观看| 亚洲无码精品在线观看| 2019男人天堂| 91精品国产99久久久久久| 亚洲午夜精品一区二区三区他趣| 少妇av片在线观看| 亚洲成人激情在线观看| 怡红院男人天堂| 91久久久久久久久久久久久| 永久免费精品影视网站| 久久99久国产精品黄毛片入口| 日本天堂影院在线视频| 亚洲自拍av在线| 国产精品中文字幕久久久| 久久影院理伦片| 91午夜在线观看| 国产精品白丝jk黑袜喷水| 久久国产免费观看| 国产精品一区二区三区四区在线观看| 性欧美大胆高清视频| 久久久久久久久久久久久国产| 欧美亚洲天堂| 日韩三级精品| 韩日成人在线| 亚洲一区二区在线播放| 精品动漫av| jiuse九色最新地址| 欧美夫妻性视频| 在线亚洲午夜片av大片| 亚洲欧美日韩精品综合在线观看| 亚洲国产精品一区二区久久| 国产色99精品9i| 色www亚洲国产阿娇yao| 亚洲麻豆av| 国产精品videosex极品| 欧美日韩国产影院| 免费看国产曰批40分钟| 午夜视频在线观看网站| 亚洲不卡视频在线观看| 欧美性videosxxxxx| 91肉色超薄丝袜脚交一区二区| 成人免费高清视频| 国产一区二区动漫| 亚洲精品日韩激情在线电影| 中文字幕视频免费观看| 日韩av不卡在线| 日韩成人在线一区| 五月伊人六月| 亚洲欧美卡通动漫| 免费成人深夜夜行p站| 肉肉av福利一精品导航| 丰满人妻一区二区三区53视频| 中文字幕五月天| 久久精品电影网站| 久久久久狠狠高潮亚洲精品| 亚洲一区二区在线免费观看| 欧美少妇激情| 亚洲欧美日韩国产成人综合一二三区| 色国产综合视频| 91精品999| 国产精品6699| 亚洲欧美aⅴ...| 久久久久香蕉视频| 亚欧美在线观看| 手机在线理论片| 五月天婷婷丁香| 欧美69xx性欧美| 亚洲国产精品麻豆| 黄色91av| 亚洲欧美色图区| 亚洲一区二区三区四区五区六区| 川上优的av在线一区二区| 图片区偷拍区小说区| 国产绿帽刺激高潮对白| 电影天堂久久| 翔田千里一区二在线观看| 亚洲国产精品欧美久久| 亚洲人成77777男人| 玖玖精品国产| av线上观看| 小视频福利在线| av网址在线| 麻豆一区二区三区在线观看| 日韩精品黄色| 国产成人免费电影| 欧美一级淫片免费视频魅影视频| 成人午夜视频网站| av福利精品| 一区二区三区毛片免费| 国产精品熟妇一区二区三区四区| 免费观看黄色大片| 毛片在线不卡| 欧美日本精品| 欧洲中文字幕国产精品| 综合图区亚洲白拍在线| 国产精品久久久久久9999| 日韩 欧美 精品| 日韩毛片视频在线看| 成人伊人精品色xxxx视频| 中国女人一级一次看片| 99麻豆久久久国产精品免费| 天堂中文а√在线| 九九九久久久久久久| 中文字幕第69页| 91p0rn永久地址| 国产精品任我爽爆在线播放| 欧美日韩亚洲国产精品| 欧美日韩免费观看一区三区| 精品伦理一区二区三区| 亚洲精品黑牛一区二区三区| 杨幂毛片午夜性生毛片| 小次郎av收藏家| 天堂网站www天堂资源在线| 国产精品久久久久久久精| 少妇高潮久久久久久潘金莲| 久久精品在线观看视频| 蜜臀av亚洲一区中文字幕| 欧美日韩亚洲在线| 狠狠做六月爱婷婷综合aⅴ| 亚洲午夜未满十八勿入免费观看全集| h视频免费看| 亚洲狠狠婷婷| 黄色污网站在线免费观看| 天海翼精品一区二区三区| 亚洲欧美一区二区三区国产精品| 99精品视频免费版的特色功能| 欧美视频一区二区三区四区| 亚洲不卡在线播放| 国产一区第一页| 男人天堂av网站| 57pao国产一区二区| 亚洲永久精品唐人导航网址| 2014亚洲天堂| 青青免费在线视频| 久久色精品视频| 国模冰冰炮一区二区| 国产又大又黄又猛| 人人爱人人干婷婷丁香亚洲| 日韩手机在线观看| 久久久久久这里只有精品| 国产一级片麻豆| 99久久精品国产麻豆演员表| 精品国产一区二区三区不卡在线| h在线观看免费| 中文字幕国产精品一区二区| 国产精品xxx电影| 岛国成人毛片| 影音先锋久久精品| 亚洲一区二区三区三州| 在线www天堂网在线| 国产精品欧美综合亚洲| 国产精品视频一区二区三区不卡| 亚洲国产综合在线观看| 亚洲精品中文字幕在线播放| 小早川怜子一区二区的演员表| 久久人体av| 欧美日韩性视频一区二区三区| 一区二区三区四区乱视频| 欧美一区二区三区久久精品茉莉花| 6080yy午夜一二三区久久| 爱情岛亚洲播放路线| 亚洲国产精品久久久久久女王| 午夜在线精品| 性欧美videos另类hd| 国产在线观看h| 欧美一区二区三区| 不卡大黄网站免费看| 国产精品爱啪在线线免费观看| 日韩精品在线免费| www.黄色国产| 天天影视色香欲综合| 337p日本欧洲亚洲大胆鲁鲁| 国产欧美一区二区三区鸳鸯浴| 伊人久久大香线蕉av不卡| 午夜精品区一区二区三| 国产一区免费电影| 国产成人aaaa| 亚洲电影一区二区三区| 久久视频这里有精品| 荫蒂被男人添免费视频| 中文写幕一区二区三区免费观成熟| 国产精品美女久久久久| 日本50路肥熟bbw| 亚洲成人教育av| 国产精品一区免费视频| 999视频精品| 国产精品88a∨| 欧美一级理论性理论a| 亚洲国产一区二区三区青草影视| 毛片免费在线观看| 日本精品免费在线观看| 蜜臀91精品一区二区三区| 国产精品入口免费麻豆| 成人资源av| 色欧美乱欧美15图片| 99re热视频这里只精品| 国产精品99一区二区三| 国产免费美女视频| 欧美乱大交做爰xxxⅹ小说| www.久久久久| 久久午夜夜伦鲁鲁一区二区| 一区三区二区视频| 国产白丝一区二区三区| 国产日韩三区| 国产69久久精品成人看| 暴力调教一区二区三区| 成人午夜av影视| 亚洲性视频h| 成人a级免费视频| 中文字幕欧美激情一区| 欧美日韩黄色大片| 欧美在线一二三四区| 成人视屏在线观看| 国产日产精品一区二区三区四区的观看方式| 懂色一区二区三区免费观看| 天堂…中文在线最新版在线| 久久香蕉精品香蕉| 国产丰满果冻videossex| 在线播放亚洲精品| 国产精品99久久不卡二区| 亚洲视频在线观看免费| 久久国产精品久久久久久久久久| 91视频一区二区| 一区二区三区视频在线看| 亚洲动漫在线观看| 一级片在线观看| 亚洲欧美日韩中文字幕在线观看| 亚洲码欧美码一区二区三区| 四虎永久免费在线| 视频91a欧美| 奇米影视第四色7777| 欧美变态另类刺激| 亚洲啪av永久无码精品放毛片| 一本一道精品欧美中文字幕| 亚洲AV无码国产精品午夜字幕| 日韩国产欧美在线播放| 亚洲春色在线视频| 国产一级片自拍| 日韩欧美一二三四区| 在线中文字幕第一区| 亚洲精品网站在线| 国产精选在线视频拍拍拍| 亚洲精品自产拍在线观看| 欧美极品少妇xxxxⅹ高跟鞋| 天天综合网 天天综合色| 日本激情小视频| 亚洲图区综合网| 精品国产成人系列| 日韩欧美激情视频| mm1313亚洲国产精品无码试看| 久久国产精品久久久久久小说| 97欧美在线视频| 一区二区三区在线免费观看| 国产精品嫩草在线观看| 香蕉伊大人中文在线观看|