【Leetcode】145.二叉树的后序遍历C++(用栈解决)

在这里插入图片描述
在这里插入图片描述


#include "iostream"

#include "vector"

#include "stack"

using namespace std;

struct TreeNode
{
    int val;
    TreeNode *left;
    TreeNode *right;
    TreeNode(int x) : val(x), left(NULL), right(NULL) {}
};


class Solution
{
public:
    vector<int> postorderTraversal(TreeNode *root)
    {
        vector<int> ans;
        stack<TreeNode *> z;
        if(root==NULL)
        {
            return ans;
        }
        z.push(root);
        TreeNode *node;
        // 正序的倒叙就是后序遍历
        while(!z.empty())
        {
            node = z.top();
            z.pop();
            ans.insert(ans.begin(), node->val);
            if(node->left)
            {
                z.push(node->left);
            }
            if(node->right)
            {
                z.push(node->right);
            }
        }
        return ans;
    }
};
发布了103 篇原创文章 · 获赞 128 · 访问量 1万+

猜你喜欢

转载自blog.csdn.net/weixin_44936889/article/details/104102957
今日推荐