递归先/后序 + 实战力扣题"/>
C++ 二叉树非递归先/后序 + 实战力扣题
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;}
};
更多推荐
C++ 二叉树非递归先/后序 + 实战力扣题
发布评论