144 二叉树非递归先序 144. 二叉树的前序遍历 - 力扣(LeetCode)
- 中 右 左 ->(中 左 右)
// 非递归先序遍历
class Solution {
public:
vector<int> preorderTraversal(TreeNode* root) {
stack<TreeNode*> st;
vector<int> res;
if(root == NULL) return res;
st.push(root);
int i=0;
while(!st.empty()) {
TreeNode* node = st.top();//中
st.pop();
res.push_back(node->val);
if(node->right) st.push(node->right);//右(空节点不入栈)
if(node->left) st.push(node->left);//左(空节点不入栈)
}
return res;
}
};
145.二叉树的后序遍历 145. 二叉树的后序遍历 - 力扣(LeetCode)
中 左 右 ->(中 右 左)
(逆序)↓
遍历顺序: 左 右 中
// 非递归先序遍历
class Solution {
public:
vector<int> postorderTraversal(TreeNode* root) {
stack<TreeNode*> st;
vector<int> res;
if(root == NULL) return res;
st.push(root);
int i=0;
while(!st.empty()) {
TreeNode* node = st.top();//中
st.pop();
res.push_back(node->val);
if(node->left) st.push(node->left);//左(空节点不入栈)
if(node->right) st.push(node->right);//右(空节点不入栈)
}
reverse(res.begin(),res.end());
return res;
}
};