二叉树非递归后序遍历

简介: 二叉树非递归后序遍历二叉树非递归后序遍历
/**
 * Definition for a binary tree node.
 * struct TreeNode {
 *     int val;
 *     TreeNode *left;
 *     TreeNode *right;
 *     TreeNode(int x) : val(x), left(NULL), right(NULL) {}
 * };
 */
/*后序非递归遍历算法de思想
由于镜像二叉树的先序遍历=原二叉树后序遍历,
可以先求出镜像先序,最后reverse一下即可。
*/
class Solution {
public:
    vector<int> postorderTraversal(TreeNode* root) {
        stack <TreeNode*> stk;
        vector<int> out;
        TreeNode* tmp;
        stk.push(root);
        if(!root) return out;
        while(!stk.empty()){
            tmp=stk.top();
            out.push_back(tmp->val);
            stk.pop();
            if(tmp->left) stk.push(tmp->left);
            if(tmp->right) stk.push(tmp->right);
        }
        reverse(out.begin(),out.end());
        return out;
    }
};
相关文章
|
6月前
|
Python
二叉树前中后序遍历
这段内容是关于二叉树的前序、中序和后序遍历的Python实现。`Solution`类包含三个方法:`preorderTraversal`、`inorderTraversal`和`postorderTraversal`,分别返回二叉树节点值的前序、中序和后序遍历列表。每个方法都是递归的,遍历顺序为:前序(根-左-右)、中序(左-根-右)、后序(左-右-根)。
54 4
|
6月前
|
存储
LeetCode题94,44,145,二叉树的前中后序遍历,非递归
LeetCode题94,44,145,二叉树的前中后序遍历,非递归
57 0
【Leetcode -94.二叉树的中序遍历 -145.二叉树的后序遍历】
【Leetcode -94.二叉树的中序遍历 -145.二叉树的后序遍历】
32 0
非递归方式实现二叉树的前、中、后序遍历
非递归方式实现二叉树的前、中、后序遍历
【C++】非递归实现二叉树的前中后序遍历
【C++】非递归实现二叉树的前中后序遍历
【C++】非递归实现二叉树的前中后序遍历
|
C语言 C++
前序遍历+中序遍历重建二叉树
前序遍历+中序遍历重建二叉树
139 0
前序遍历+中序遍历重建二叉树
|
算法 前端开发 JavaScript
「LeetCode」二叉树的先中后序遍历(非递归版)⚡️
「LeetCode」二叉树的先中后序遍历(非递归版)⚡️
118 0
「LeetCode」二叉树的先中后序遍历(非递归版)⚡️