前序遍历
144. 二叉树的前序遍历
class Solution {
public:
vector<int> preorderTraversal(TreeNode* root) {
vector<int> res;
if(root==nullptr)
return res;
stack<TreeNode*> stk;
TreeNode* node=root;
stk.push(node);
while(!stk.empty() ){
node=stk.top();
stk.pop();
res.push_back(node->val);
if(node->right) stk.push(node->right);
if(node->left) stk.push(node->left);
}
return res;
}
};
class Solution {
public:
vector<int> inorderTraversal(TreeNode* root) {
vector<int> res;
stack<TreeNode*> stk;
TreeNode* cur=root;
while(cur!=nullptr || !stk.empty()){
if(cur){
stk.push(cur);
cur=cur->left;
}
else{
cur=stk.top();
stk.pop();
res.push_back(cur->val);
cur=cur->right;
}
}
return res;
return res;
}
};
class Solution {
public:
vector<int> postorderTraversal(TreeNode* root) {
vector<int> res;
TreeNode* cur=root,*prev=nullptr;
stack<TreeNode*> stk;
while(cur || !stk.empty()){
while(cur){
stk.push(cur);
cur=cur->left;
}
cur=stk.top();
if(cur->right&&cur->right!=prev){
cur=cur->right;
}
else{
stk.pop();
res.push_back(cur->val);
prev=cur;
cur=nullptr;
}
}
return res;
}
};