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

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

C++實現二叉樹非遞歸遍歷方法實例總結

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

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

具體代碼如下:

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++算法學習有所幫助。

發表評論 共有條評論
用戶名: 密碼:
驗證碼: 匿名發表
主站蜘蛛池模板: 溆浦县| 饶阳县| 樟树市| 辛集市| 新野县| 津市市| 泰安市| 肇东市| 浙江省| 建瓯市| 军事| 上饶市| 宁南县| 高州市| 沁源县| 冷水江市| 栖霞市| 永福县| 崇州市| 阜南县| 宁都县| 汉川市| 阳西县| 惠东县| 应城市| 西乌珠穆沁旗| 句容市| 利津县| 南昌县| 平遥县| 怀远县| 宁强县| 巴南区| 乌恰县| 黔西县| 海丰县| 凭祥市| 肇州县| 石景山区| 安国市| 绍兴市|