首页 > 代码库 > Leetcode: Binary Tree Postorder Traversal

Leetcode: Binary Tree Postorder Traversal

Given a binary tree, return the postorder traversal of its nodes‘ values.

For example:
Given binary tree {1,#,2,3},

   1         2    /   3

 

return [3,2,1].

Note: Recursive solution is trivial, could you do it iteratively?

分析:用两个栈,一个栈A用于扩展子树,另一个B栈用于保存结果。入栈A的顺序是先左子树后右子树,从栈A出的元素被压入栈B。代码如下:

class Solution {public:    vector<int> postorderTraversal(TreeNode *root) {        vector<int> res;        if(!root) return res;        stack<TreeNode *> s;        stack<TreeNode *> output;                TreeNode * cur;                s.push(root);        while(!s.empty()){            cur = s.top();            output.push(cur);            s.pop();            if(cur->left) s.push(cur->left);            if(cur->right) s.push(cur->right);        }        while(!output.empty()){            cur = output.top();            res.push_back(cur->val);            output.pop();        }        return res;    }};

 

Leetcode: Binary Tree Postorder Traversal