国产探花免费观看_亚洲丰满少妇自慰呻吟_97日韩有码在线_资源在线日韩欧美_一区二区精品毛片,辰东完美世界有声小说,欢乐颂第一季,yy玄幻小说排行榜完本

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

C++實現(xiàn)二叉樹非遞歸遍歷方法實例總結(jié)

2020-05-23 14:21:49
字體:
供稿:網(wǎng)友
這篇文章主要介紹了C++實現(xiàn)二叉樹非遞歸遍歷方法實例總結(jié),是算法設(shè)計中比較經(jīng)典的一個遍歷算法,需要的朋友可以參考下
 
 

一般來說,二叉樹的遍歷是C++程序員在面試中經(jīng)常考察的,其實前中后三種順序的遍歷都大同小異,自己模擬兩個棧用筆畫畫是不難寫出代碼的。現(xiàn)舉一個非遞歸遍歷的方法如下,供大家參考。

具體代碼如下:

class Solution {public:  vector<int> preorderTraversal(TreeNode *root) {    vector<int> out;    stack<TreeNode*> s;    s.push(root);    while(!s.empty() && root){      TreeNode *node = s.top();      out.push_back(node->val);      s.pop();      if(node->right) s.push(node->right);      if(node->left) s.push(node->left);    }    return out;  }  vector<int> inorderTraversal(TreeNode *root) {    stack<TreeNode *> s;    vector<int> out;    TreeNode *node = root;    bool done = false;    while(!done){      if(node){        s.push(node);        node = node->left;      }else {        if(s.empty()) done = true;        else{          node = s.top();          s.pop();          out.push_back(node->val);          node = node->right;        }      }    }    return out;  }  vector<int> postorderTraversal(TreeNode *root) {    vector<int> out;    stack<TreeNode*> s;    TreeNode* node = root;    s.push(node);    while(!s.empty()&&node){      node = s.top();      out.push_back(node->val);      s.pop();      if(node->left) s.push(node->left);      if(node->right)s.push(node->right);    }    reverse(out.begin(),out.end());    return out;  }};

希望本文所述對大家的C++算法學(xué)習(xí)有所幫助。


發(fā)表評論 共有條評論
用戶名: 密碼:
驗證碼: 匿名發(fā)表
主站蜘蛛池模板: 赣榆县| 蒙山县| 大宁县| 松滋市| 荔浦县| 历史| 平乐县| 政和县| 香格里拉县| 来凤县| 望城县| 德庆县| 沅江市| 南漳县| 汝城县| 富锦市| 朝阳区| 牡丹江市| 天镇县| 醴陵市| 繁昌县| 柳州市| 玉门市| 凤台县| 孟津县| 堆龙德庆县| 南乐县| 苍溪县| 襄汾县| 成安县| 乡宁县| 阜康市| 临城县| 延津县| 鸡东县| 吴桥县| 增城市| 保山市| 保德县| 石门县| 安丘市|