LintCode_068_二叉树的后序遍历

来源:互联网 发布:网络人身攻击怎么办 编辑:程序博客网 时间:2024/05/20 01:12

问题描述

给出一棵二叉树,返回其节点值的后序遍历。

样例
给出一棵二叉树 {1,#,2,3},

   1    \     2    /   3

返回 [3,2,1].

挑战

你能使用非递归实现么?

求解

class Solution2{  public:    vector<int> postorderTraversal(TreeNode *root)    {        vector<int> res;        stack<pair<TreeNode *, bool>> s;        s.emplace(root, false);        while (!s.empty())        {            bool visited;            tie(root, visited) = s.top();            s.pop();            if (root == nullptr)            {                continue;            }            if (visited)            {                res.emplace_back(root->val);            }            else            {                s.emplace(root, true);                s.emplace(root->right, false);                s.emplace(root->left, false);            }        }        return res;    }};
原创粉丝点击