0
点赞
收藏
分享

微信扫一扫

前端面试题之Javascript篇

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;
    }
};

 

举报

相关推荐

0 条评论