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

首頁 > 編程 > C > 正文

C語言實現二叉樹遍歷的迭代算法

2020-01-26 15:18:23
字體:
來源:轉載
供稿:網友

本文實例講述了C語言實現二叉樹遍歷的迭代算法,是數據結構算法中非常經典的一類算法。分享給大家供大家參考。

具體實現方法如下:

二叉樹中序遍歷的迭代算法:

#include <iostream>#include <stack>using namespace std;struct Node {  Node(int i, Node* l = NULL, Node* r = NULL) : item(i), left(l), right(r) {}  int item;  Node* left;  Node* right; }; Node* construct() {  Node* node6 = new Node(16);  Node* node5 = new Node(12);  Node* node4 = new Node(8);  Node* node3 = new Node(4);  Node* node2 = new Node(14, node5, node6);  Node* node1 = new Node(6, node3, node4);  Node* node0 = new Node(10, node1, node2);  return node0; }//遞歸算法void inorder(Node *root){ if (root == NULL) return; inorder(root->left); cout << root->item << " "; inorder(root->right);}void preorder(Node *root){ if(root == NULL) return; cout << root->item << " "; preorder(root->left); preorder(root->right);}void postorder(Node *root){ if (root == NULL) return; postorder(root->left); postorder(root->right); cout << root->item << " ";}void postorder2(Node *root){ if (root == NULL) return; stack<Node *> nstack; Node *pre = NULL; nstack.push(root); Node *node = NULL; while (!nstack.empty()) { node = nstack.top(); if (pre != node->left && pre != node->right) {  if (node->right)  nstack.push(node->right);  if (node->left)  nstack.push(node->left); } if (node->left == NULL && node->right == NULL   || pre == node->left || pre == node->right) {  cout << node->item << " ";  nstack.pop(); } pre = node; }}void preorder2(Node *root){ if(root == NULL) return; stack<Node *> nstack; Node *node = root; while (node != NULL || !nstack.empty()) { while(node != NULL) {  cout << node->item << " ";  nstack.push(node);  node = node->left; } node = nstack.top(); nstack.pop(); node = node->right; }}void preorder3(Node *root){ if (root == NULL) return; stack<Node *> nstack; nstack.push(root); Node *node = NULL; while (!nstack.empty()) { node = nstack.top(); nstack.pop(); cout << node->item << " "; if (node->right)  nstack.push(node->right); if (node->left)  nstack.push(node->left); }}//迭代算法void inorder2(Node *root){ if(root == NULL) return; stack<Node *> nstack; nstack.push(root); Node *next = root->left; while (next != NULL || !nstack.empty()) { while (next != NULL) {  nstack.push(next);  next = next->left; } next = nstack.top(); nstack.pop(); cout << next->item << " "; next = next->right; }}int main(){ Node *root = construct(); cout << "---------中序遍歷遞歸---------" << endl; inorder(root); cout << endl; cout << "---------中序遍歷迭代---------" << endl; inorder2(root); cout << endl; cout << "---------先序遍歷遞歸---------" << endl; preorder(root); cout << endl; cout << "---------先序遍歷迭代1---------" << endl; preorder2(root); cout << endl; cout << "---------先序遍歷迭代2---------" << endl; preorder3(root); cout << endl; cout << "---------后序遍歷遞歸---------" << endl; postorder(root); cout << endl; cout << "---------后序遍歷迭代---------" << endl; postorder2(root);}

關于前序遍歷,后來又寫的算法如下,供大家參考:

void preOrderIterator(Node *root){ if (root == NULL) return; stack<Node*> nstack; nstack.push(root); while (!nstack.empty()) { Node *top = nstack.top(); while (top != NULL) {  if (top->left)  nstack.push(top->left);  cout << top->data << " ";  top = top->left; } while (top == NULL && !nstack.empty()) {  top = nstack.top()->right;  nstack.pop(); } if (top != NULL)  nstack.push(top); }}

相信本文所述對大家C程序算法設計的學習有一定的借鑒價值。

發表評論 共有條評論
用戶名: 密碼:
驗證碼: 匿名發表

圖片精選

亚洲香蕉成人av网站在线观看_欧美精品成人91久久久久久久_久久久久久久久久久亚洲_热久久视久久精品18亚洲精品_国产精自产拍久久久久久_亚洲色图国产精品_91精品国产网站_中文字幕欧美日韩精品_国产精品久久久久久亚洲调教_国产精品久久一区_性夜试看影院91社区_97在线观看视频国产_68精品久久久久久欧美_欧美精品在线观看_国产精品一区二区久久精品_欧美老女人bb
国产精品一区二区三区在线播放| 国产精品入口免费视频一| 国产日本欧美视频| 青青久久av北条麻妃黑人| 国产精品免费视频xxxx| 亚洲一区二区三区毛片| 亚洲欧美综合区自拍另类| 欧美大片第1页| 欧美极品少妇与黑人| 中文字幕成人在线| 91麻豆国产语对白在线观看| 国产精品久久久久久一区二区| 亚洲美女性视频| 亚洲欧美一区二区三区久久| 91久久精品国产| 午夜精品一区二区三区av| 欧美国产日韩一区二区| 日韩av电影中文字幕| 成人在线视频网| 欧美三级欧美成人高清www| 欧美性极品少妇精品网站| 久久精品亚洲精品| 日韩精品极品在线观看| 国产成人精品av在线| 日韩美女免费观看| 日韩高清中文字幕| 久久久久久久电影一区| 91在线高清免费观看| 亚洲精品一区中文字幕乱码| 欧美性69xxxx肥| 成人在线免费观看视视频| 在线观看国产精品日韩av| 欧美激情国产高清| 插插插亚洲综合网| 欧美成人精品h版在线观看| 国产一区二区三区在线观看网站| 91精品视频一区| 欧美性生交大片免网| 日韩视频在线观看免费| 成人黄色在线观看| 亚洲毛片在线观看.| 91午夜理伦私人影院| 亚洲精品美女网站| 精品久久久久久电影| 欧美午夜片欧美片在线观看| 国产精品成人aaaaa网站| 96精品视频在线| 97超级碰碰人国产在线观看| 亚洲区中文字幕| 91av在线免费观看视频| 亚洲精品国产欧美| 亚洲天堂av女优| 欧美性生交xxxxxdddd| 午夜精品久久久久久久久久久久久| 亚洲石原莉奈一区二区在线观看| 欧美黑人视频一区| 最近2019中文免费高清视频观看www99| 欧美特级www| 亚洲韩国日本中文字幕| 在线亚洲男人天堂| 亚洲天堂男人天堂女人天堂| 国产精品成人一区二区三区吃奶| 国产精品一区二区久久精品| 亚洲娇小xxxx欧美娇小| 日韩精品极品在线观看播放免费视频| 国产精品中文字幕在线观看| 欧美乱大交xxxxx| 亚洲精美色品网站| 热门国产精品亚洲第一区在线| 欧美电影免费观看高清完整| 亚洲女性裸体视频| 色悠悠久久久久| 国产精品国产三级国产aⅴ浪潮| 亚洲综合中文字幕在线观看| 久久69精品久久久久久国产越南| 欧美成人性生活| 欧美黑人一级爽快片淫片高清| 国产亚洲成av人片在线观看桃| 久久久视频免费观看| 日韩av在线网页| 欧美亚洲另类在线| 亚洲自拍偷拍网址| 国产精品444| 久热精品在线视频| 精品国模在线视频| 欧美黑人狂野猛交老妇| 国产精品大片wwwwww| 日韩精品中文字幕在线| 91精品视频在线免费观看| 亚洲欧洲在线看| 日韩美女写真福利在线观看| 亚洲欧美一区二区三区在线| 欧美巨大黑人极品精男| 国产精品27p| 精品动漫一区二区| 午夜免费久久久久| 欧美日韩免费看| 亚洲精品永久免费| 3344国产精品免费看| 欧美一区在线直播| 欧洲永久精品大片ww免费漫画| 高清在线视频日韩欧美| 91情侣偷在线精品国产| 久久午夜a级毛片| 成人av番号网| 日韩久久精品电影| 亚洲一区二区三区四区视频| 色妞在线综合亚洲欧美| 欧美日韩国产精品一区二区三区四区| 亚洲精品午夜精品| 国产欧美va欧美va香蕉在线| 久久精品国产亚洲一区二区| 91久久国产精品91久久性色| 久久久国产精品一区| 亚洲丁香婷深爱综合| 97在线看免费观看视频在线观看| 亚洲国产精品嫩草影院久久| 国产成人精品a视频一区www| 日韩在线视频线视频免费网站| 国产精品无码专区在线观看| 欧美精品激情在线| 成人免费网视频| 国产欧美亚洲精品| 亚洲视频在线免费看| 精品一区二区三区电影| 97碰在线观看| 欧美成人久久久| 欧美一区二区视频97| 按摩亚洲人久久| 亚洲一区二区在线播放| 亲爱的老师9免费观看全集电视剧| 欧美成人精品激情在线观看| 精品综合久久久久久97| 丝袜美腿精品国产二区| 欧美成人免费在线观看| 国产精品久久综合av爱欲tv| 国产欧美亚洲视频| 亚洲午夜色婷婷在线| 亚洲曰本av电影| 国产偷国产偷亚洲清高网站| 亚洲电影免费在线观看| 精品国偷自产在线| 最近中文字幕mv在线一区二区三区四区| 国产一区二区三区在线看| 国产精品爱久久久久久久| 91精品国产91久久久久久最新| 欧美性感美女h网站在线观看免费| 亚洲精品一区中文字幕乱码| 日韩成人av在线| 性欧美激情精品| 亚洲自拍偷拍网址| 亚洲精品一区二三区不卡| 亚洲男人第一av网站| 亚洲欧美激情视频| 日韩精品在线观看一区| 亚洲天堂开心观看| 国产精品中文字幕在线观看| 欧美二区在线播放| 亚洲少妇中文在线| 色天天综合狠狠色| 亚洲欧美日韩天堂一区二区| 国产成人jvid在线播放| 91亚洲va在线va天堂va国| 亚洲第一福利视频|