C++實(shí)現(xiàn)二叉樹非遞歸遍歷方法實(shí)例總結(jié)
一般來說,二叉樹的遍歷是C++程序員在面試中經(jīng)??疾斓?,其實(shí)前中后三種順序的遍歷都大同小異,自己模擬兩個(gè)棧用筆畫畫是不難寫出代碼的?,F(xiàn)舉一個(gè)非遞歸遍歷的方法如下,供大家參考。
具體代碼如下:
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;
}
};
希望本文所述對(duì)大家的C++算法學(xué)習(xí)有所幫助。
相關(guān)文章
Qt編寫提示進(jìn)度條的實(shí)現(xiàn)示例
進(jìn)度條在很地方都可以使用到,Qt自帶的進(jìn)度條或者操作系統(tǒng)的進(jìn)度條樣式,不夠炫,本文就介紹一下Qt編寫自定義控件的提示進(jìn)度條的實(shí)現(xiàn)示例,感興趣的可以了解一下2021-12-12
Qt利用QDrag實(shí)現(xiàn)拖拽拼圖功能詳解
QDrag類為MIME-based拖拽數(shù)據(jù)轉(zhuǎn)換提供支持。本文為大家主要介紹如何利用QDrag類實(shí)現(xiàn)拖拽拼圖功能。左邊是打散的圖,拖動(dòng)到右邊進(jìn)行復(fù)現(xiàn),此外程序還支持手動(dòng)拖入原圖片,感興趣的可以了解一下2022-07-07
C語言實(shí)現(xiàn)數(shù)獨(dú)程序的示例代碼
數(shù)獨(dú)是源自瑞士的一種數(shù)學(xué)游戲。是一種運(yùn)用紙、筆進(jìn)行演算的邏輯游戲。本文將利用C語言實(shí)現(xiàn)數(shù)獨(dú)程序,感興趣的小伙伴可以跟隨小編一起學(xué)習(xí)一下2023-03-03
C語言排序算法之冒泡排序?qū)崿F(xiàn)方法【改進(jìn)版】
這篇文章主要介紹了C語言排序算法之冒泡排序?qū)崿F(xiàn)方法,結(jié)合具體實(shí)例形式分析了C語言實(shí)現(xiàn)的基本冒泡排序?qū)崿F(xiàn)方法及增設(shè)flag標(biāo)志位的改進(jìn)型算法,需要的朋友可以參考下2017-09-09
淺談Qt實(shí)現(xiàn)HTTP的Get/Post請(qǐng)求
本文主要介紹了淺談Qt實(shí)現(xiàn)HTTP的Get/Post請(qǐng)求,文中通過示例代碼介紹的非常詳細(xì),對(duì)大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價(jià)值,需要的朋友們下面隨著小編來一起學(xué)習(xí)學(xué)習(xí)吧2022-05-05
C語言經(jīng)典算法例題求100-999之間的“水仙花數(shù)”
本文的主要內(nèi)容,設(shè)計(jì)一個(gè)程序,找出100-999之間的“水仙花數(shù)”,需要的朋友可以參考下2015-07-07
實(shí)現(xiàn)一個(gè)內(nèi)存池管理的類方法
下面小編就為大家?guī)硪黄獙?shí)現(xiàn)一個(gè)內(nèi)存池管理的類方法。小編覺得挺不錯(cuò)的現(xiàn)在就分享給大家,也給大家做個(gè)參考。一起跟隨小編過來看看吧2017-01-01

