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

歡迎訪問 生活随笔!

生活随笔

當前位置: 首頁 > 编程资源 > 编程问答 >内容正文

编程问答

算法9---二叉树的遍历不用栈和递归

發布時間:2023/12/10 编程问答 22 豆豆
生活随笔 收集整理的這篇文章主要介紹了 算法9---二叉树的遍历不用栈和递归 小編覺得挺不錯的,現在分享給大家,幫大家做個參考.

二叉樹的遍歷不用棧和遞歸

轉自:ACM之家?http://www.acmerblog.com/inorder-tree-traversal-without-recursion-and-without-stack-5988.html 我們知道,在深度搜索遍歷的過程中,之所以要用遞歸或者是用非遞歸的棧方式,參考二叉樹非遞歸中序遍歷,都是因為其他的方式沒法記錄當前節點的parent,而如果在每個節點的結構里面加個parent 分量顯然是不現實的,那么Morris是怎么解決這一問題的呢?好吧,他用得很巧妙,實際上是用葉子節點的空指針來記錄當前節點的位置,然后一旦遍歷到了葉子節點,發現葉子節點的右指針指向的是當前節點,那么就認為以當前節點的左子樹已經遍歷完成。Morris 遍歷正是利用了線索二叉樹?的思想。 以inorder為例,初始化當前節點為root,它的遍歷規則如下: - 如果當前節點為空,程序退出。 - 如果當前節點非空, - 如果當前節點的左兒子為空,那么輸出當前節點,當前節點重置為當前節點的右兒子。 - 如果當前節點的左兒子非空,找到當前節點左子樹的最右葉子節點(此時最右節點的右兒子有兩種情況,一種是指向當前節點,一種是為空,你也許感到奇怪,右節點的右兒子怎么可能非空,注意,這里的最右葉子節點只帶的是原樹中的最右葉子節點。),若其最右葉子節點為空,令其指向當前節點,將當前節點重置為其左兒子,若其最右節點指向當前節點,輸出當前節點,將當前節點重置為當前節點的右兒子,并恢復樹結構,即將最右節點的右節點再次設置為NULL 1 #include<stdio.h> 2 #include<stdlib.h> 3 4 struct tNode 5 { 6 int data; 7 struct tNode* left; 8 struct tNode* right; 9 }; 10 11 void MorrisTraversal(struct tNode *root) 12 { 13 struct tNode *current,*pre; 14 15 if(root == NULL) 16 return; 17 18 current = root; 19 while(current != NULL) 20 { 21 if(current->left == NULL) 22 { 23 printf(" %d ", current->data); 24 current = current->right; 25 } 26 else 27 { 28 /* 找到current的前驅節點 */ 29 pre = current->left; 30 while(pre->right != NULL && pre->right != current) 31 pre = pre->right; 32 33 /* 將current節點作為其前驅節點的右孩子 */ 34 if(pre->right == NULL) 35 { 36 pre->right = current; 37 current = current->left; 38 } 39 40 /* 恢復樹的原有結構,更改right 指針 */ 41 else 42 { 43 pre->right = NULL; 44 printf(" %d ",current->data); 45 current = current->right; 46 } /* End of if condition pre->right == NULL */ 47 } /* End of if condition current->left == NULL*/ 48 } /* End of while */ 49 } 50 51 struct tNode* newtNode(int data) 52 { 53 struct tNode* tNode = (struct tNode*) 54 malloc(sizeof(struct tNode)); 55 tNode->data = data; 56 tNode->left = NULL; 57 tNode->right = NULL; 58 59 return(tNode); 60 } 61 62 /* 測試*/ 63 int main() 64 { 65 66 /* 構建樹結構如下: 67 1 68 / \ 69 2 3 70 / \ 71 4 5 72 */ 73 struct tNode *root = newtNode(1); 74 root->left = newtNode(2); 75 root->right = newtNode(3); 76 root->left->left = newtNode(4); 77 root->left->right = newtNode(5); 78 79 MorrisTraversal(root); 80 return 0; 81 }

?

轉載于:https://www.cnblogs.com/tao-alex/p/5894348.html

總結

以上是生活随笔為你收集整理的算法9---二叉树的遍历不用栈和递归的全部內容,希望文章能夠幫你解決所遇到的問題。

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

主站蜘蛛池模板: 日本久久综合 | 99青青草 | 岛国av大片| 成人在线网站 | 国产精品乱码久久久久久 | 色婷婷精品久久二区二区密 | 欧美激情在线一区二区 | 高清av一区二区三区 | 国产精品毛片视频 | 7m精品福利视频导航 | 91 免费看片| 免费网站看av | 久久精品一区二区国产 | 91操人视频| 好吊色这里只有精品 | 日韩在线免费视频观看 | 国产成人激情 | 日批视频在线播放 | 亚洲精品黄色片 | 天天玩天天操 | 人人看人人澡 | 第一章婶婶的性事 | 国产黄色一级大片 | 久久久久久久久久99精品 | ass大乳尤物肉体pics | 欧美成年人视频在线观看 | 国产欧美一区二区三区白浆喷水 | 熟女熟妇伦久久影院毛片一区二区 | 精品无码在线视频 | 亚洲区在线播放 | 亚洲精品久久久蜜桃 | 天堂av网在线 | 免费吃奶摸下激烈视频 | 色多多网站 | 亚洲精品视屏 | 中国老头性行为xxxx | 成人高清| 国产精品国产馆在线真实露脸 | 精品国产精品国产偷麻豆 | 51调教丨国产调教视频 | 女人18毛片水真多 | aⅴ在线免费观看 | 欧美鲁鲁 | 免费的毛片 | 欧美我不卡| 成人午夜一区二区 | 色999五月色 | 你懂的视频在线播放 | 亚洲熟女综合色一区二区三区 | 色婷av| 干干干日日日 | 福利片一区二区 | 午夜日韩电影 | 国产麻豆自拍 | 黄色福利在线观看 | 大桥未久恸哭の女教师 | 乳罩脱了喂男人吃奶视频 | 国产免费中文字幕 | 中日韩在线观看视频 | 国产精品一区二区三区四区在线观看 | 免费成人深夜夜行网站视频 | 亚洲一区国产精品 | 成人国产精品一区二区 | 激情久久av | 加勒比毛片 | 爱逼av| 亚洲精品乱码久久久久久9色 | 小宝贝真紧h军人h | 91久久精品日日躁夜夜躁欧美 | 深夜福利亚洲 | 久久免费观看视频 | 高跟91娇喘 | 青青青视频免费观看 | 污的网站 | 亚洲欧美精品在线 | 免费一级肉体全黄毛片 | 美味的客房沙龙服务 | 在线免费看a | 野花社区视频在线观看 | 蜜桃视频中文字幕 | 自拍偷拍第二页 | 无码国产精品高潮久久99 | www.com色| 欧美 日韩 国产 高清 | 欧美日韩高清一区 | 寂寞d奶大胸少妇 | 久操视频在线观看免费 | 女人高潮特级毛片 | jul023被夫上司连续侵犯 | 久草蜜桃 | 亚洲一区国产精品 | 亚洲淫视频 | 国产色综合网 | 男人天堂网在线视频 | 殴美一级特黄aaaaaa | av资源网站 | 性欧美ⅴideo另类hd | 色中文在线 | 成人福利在线看 |