国产探花免费观看_亚洲丰满少妇自慰呻吟_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ā)表
主站蜘蛛池模板: 化德县| 鞍山市| 赤水市| 岳阳县| 汪清县| 新干县| 法库县| 七台河市| 盐边县| 仁化县| 湘潭县| 广河县| 河源市| 鄢陵县| 安康市| 永福县| 九寨沟县| 陆川县| 新乐市| 封丘县| 利辛县| 宣武区| 牙克石市| 浑源县| 循化| 奈曼旗| 海南省| 兖州市| 南澳县| 神农架林区| 濮阳市| 崇文区| 海盐县| 中超| 涿鹿县| 长治县| 贵定县| 平昌县| 长沙市| 德江县| 上饶县|