/**
* Definition for a binary tree node.
* struct TreeNode {
* int val;
* TreeNode *left;
* TreeNode *right;
* TreeNode(int x) : val(x), left(NULL), right(NULL) {}
* };
*/
class Solution {
public:
vector<int> preorderTraversal(TreeNode* root) {
stack<TreeNode*> s;
vector<int> vec;
if(!root){
return vec;
}
vec.push_back(root->val);
s.push(root);
while(!s.empty()){
TreeNode *pNode = s.top();
if(pNode->left){
vec.push_back(pNode->left->val);
s.push(pNode->left);
pNode->left = NULL;
}else{
s.pop();
if(pNode->right){
vec.push_back(pNode->right->val);
s.push(pNode->right);
}
}
}
return vec;
}
/* 要使用到map
vector<int> preorderTraversal(TreeNode* root){
stack<TreeNode*> s;
vector<int> vec;
unordered_map<TreeNode*, bool> map;
if(!root){
return vec;
}
s.push(root);
vec.push_back(root->val);
while(!s.empty()){
TreeNode* node = s.top();
if(node->left && !map[node->left]){
map[node->left] = true;
vec.push_back(node->left->val);
s.push(node->left);
}else{
s.pop();
if(node->right && !map[node->right]){
map[node->right] = true;
vec.push_back(node->right->val);
s.push(node->right);
}
}
}
return vec;
}*/
/*不使用map和不改變樹結(jié)構(gòu)
vector<int> preorderTraversal(TreeNode* root) {
stack<TreeNode*> s;
vector<int> vec;
TreeNode *pCurrent = root;
while(!s.empty() || pCurrent){
if(pCurrent){
vec.push_back(pCurrent->val);
s.push(pCurrent);
pCurrent = pCurrent->left;
}else{
pCurrent = s.top();
s.pop();
pCurrent = pCurrent->right;
}
}
return vec;
}*/
/*
vector<int> preorderTraversal(TreeNode* root){
vector<int> vec;
if (root == nullptr) return vec;
stack<TreeNode*> st;
st.push(root);
while (!st.empty()) {
root = st.top();
st.pop();
vec.push_back(root->val);
if (root->right != nullptr) st.push(root->right);
if (root->left != nullptr) st.push(root->left);
}
return vec;
}
*/
/*
遞歸遍歷
vector<int> preorderTraversal(TreeNode* root, vector<int>& vec){
if(!root){
return vec;
}
vec.push_back(root->val);
preorderTraversal(root->left, vec);
preorderTraversal(root->right, vec);
return vec;
}
*/
};
前序遍歷二叉樹
最后編輯于 :
?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請(qǐng)聯(lián)系作者
- 文/潘曉璐 我一進(jìn)店門,熙熙樓的掌柜王于貴愁眉苦臉地迎上來(lái)胖喳,“玉大人泡躯,你說(shuō)我怎么就攤上這事±龊福” “怎么了较剃?”我有些...
- 文/不壞的土叔 我叫張陵,是天一觀的道長(zhǎng)技健。 經(jīng)常有香客問(wèn)我写穴,道長(zhǎng),這世上最難降的妖魔是什么雌贱? 我笑而不...
- 正文 為了忘掉前任啊送,我火速辦了婚禮,結(jié)果婚禮上欣孤,老公的妹妹穿的比我還像新娘馋没。我一直安慰自己,他們只是感情好导街,可當(dāng)我...
- 文/花漫 我一把揭開白布。 她就那樣靜靜地躺著纤子,像睡著了一般搬瑰。 火紅的嫁衣襯著肌膚如雪。 梳的紋絲不亂的頭發(fā)上控硼,一...
- 那天泽论,我揣著相機(jī)與錄音,去河邊找鬼卡乾。 笑死翼悴,一個(gè)胖子當(dāng)著我的面吹牛,可吹牛的內(nèi)容都是我干的。 我是一名探鬼主播鹦赎,決...
- 文/蒼蘭香墨 我猛地睜開眼谍椅,長(zhǎng)吁一口氣:“原來(lái)是場(chǎng)噩夢(mèng)啊……” “哼!你這毒婦竟也來(lái)了古话?” 一聲冷哼從身側(cè)響起雏吭,我...
- 序言:老撾萬(wàn)榮一對(duì)情侶失蹤,失蹤者是張志新(化名)和其女友劉穎陪踩,沒(méi)想到半個(gè)月后杖们,有當(dāng)?shù)厝嗽跇淞掷锇l(fā)現(xiàn)了一具尸體,經(jīng)...
- 正文 獨(dú)居荒郊野嶺守林人離奇死亡肩狂,尸身上長(zhǎng)有42處帶血的膿包…… 初始之章·張勛 以下內(nèi)容為張勛視角 年9月15日...
- 正文 我和宋清朗相戀三年摘完,在試婚紗的時(shí)候發(fā)現(xiàn)自己被綠了。 大學(xué)時(shí)的朋友給我發(fā)了我未婚夫和他白月光在一起吃飯的照片傻谁。...
- 正文 年R本政府宣布力图,位于F島的核電站步绸,受9級(jí)特大地震影響,放射性物質(zhì)發(fā)生泄漏吃媒。R本人自食惡果不足惜瓤介,卻給世界環(huán)境...
- 文/蒙蒙 一、第九天 我趴在偏房一處隱蔽的房頂上張望赘那。 院中可真熱鬧刑桑,春花似錦、人聲如沸募舟。這莊子的主人今日做“春日...
- 文/蒼蘭香墨 我抬頭看了看天上的太陽(yáng)拱礁。三九已至琢锋,卻和暖如春,著一層夾襖步出監(jiān)牢的瞬間呢灶,已是汗流浹背吴超。 一陣腳步聲響...
- 正文 我出身青樓,卻偏偏與公主長(zhǎng)得像,于是被迫代替她去往敵國(guó)和親鸟悴。 傳聞我的和親對(duì)象是個(gè)殘疾皇子陈辱,可洞房花燭夜當(dāng)晚...
推薦閱讀更多精彩內(nèi)容
- 在前文數(shù)據(jù)結(jié)構(gòu):二叉樹的原理及java實(shí)現(xiàn)中揍堰,我們已經(jīng)了解了二叉樹的原理及二叉樹的三種遍歷方式鹏浅,假設(shè)父節(jié)點(diǎn)是N,左...
- 最近看了一下大學(xué)的數(shù)據(jù)結(jié)構(gòu)季希,??學(xué)到了以前沒(méi)學(xué)到的東西看到了二叉樹那一塊,感覺(jué)二叉樹是個(gè)很重要的東西幽纷,就看了一下底層...
- 題目 根據(jù)前序遍歷和中序遍歷樹構(gòu)造二叉樹. 注意事項(xiàng) 你可以假設(shè)樹中不存在相同數(shù)值的節(jié)點(diǎn) 樣例給出中序遍歷:[1,...
- 想去過(guò)精致的生活友浸,卻又不愿意去努力峰尝,總是借口說(shuō)被什么什么東西絆住手腳,其實(shí)不過(guò)是因?yàn)閼卸韬ε赂冻隽T了收恢。 想去大城市...