144.二叉树的前序遍历
class Solution {
public:
vector<int> preorderTraversal(TreeNode* root) {
stack<TreeNode*> a;
vector<int> ret;
if (root != NULL)
a.push(root);
while (!a.empty()) {
TreeNode* node = a.top();
if (node != NULL) {
a.pop();
if (node->right)
a.push(node->right);
if (node->left)
a.push(node->left);
a.push(node);
a.push(NULL);
} else {
a.pop();
TreeNode* k = a.top();
a.pop();
ret.push_back(k->val);
}
}
return ret;
}
};
94.二叉树的中序遍历
class Solution {
public:
vector<int> inorderTraversal(TreeNode* root) {
stack<TreeNode*> a;
vector<int> ret;
if (root!=NULL)
a.push(root);
while (!a.empty()) {
TreeNode* node = a.top();
if (node!=NULL){
a.pop();
if(node->right)
a.push(node->right);
a.push(node);
a.push(NULL);
if(node->left)
a.push(node->left);
}
else{
a.pop();
TreeNode* k=a.top();
a.pop();
ret.push_back(k->val);
}
}
return ret;
}
};
145.二叉树的后序遍历
class Solution {
public:
vector<int> postorderTraversal(TreeNode* root) {
stack<TreeNode*>a;
vector<int>ret;
if(root!=NULL)
a.push(root);
while(!a.empty()){
TreeNode* node=a.top();
if(node!=NULL){
a.pop();
a.push(node);
a.push(NULL);
if(node->right)
a.push(node->right);
if(node->left)
a.push(node->left);
}
else{
a.pop();
TreeNode* k=a.top();
a.pop();
ret.push_back(k->val);
}
}
return ret;
}
};