码迷,mamicode.com
首页 > 其他好文 > 详细

leetcode - [6]Binary Tree Postorder Traversal

时间:2014-09-24 22:57:37      阅读:187      评论:0      收藏:0      [点我收藏+]

标签:des   style   blog   color   io   os   ar   for   div   

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].

 

 思路:后序遍历是按照“左子树,右子树,根”的顺序访问元素。那么根或者其它父亲元素就要先压入栈,然后再弹出。

#include <iostream>
#include <algorithm>
#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> res;
        stack<TreeNode *> s;    
        if (!root) {
            return res;
        }
        s.push(root);
        while (!s.empty()) {
            TreeNode *p = s.top(); s.pop();    
            res.push_back(p->val);

            if (p->right) {
                s.push(p->right);
            }

            if (p->left) {
                s.push(p->left);
            }
        }
        reverse(res.begin(), res.end());
        return res;
    }
};

int main(int argc, char *argv[]) {
    TreeNode *p = new TreeNode(9);    
    p->right = new TreeNode(1);    
    p->left = new TreeNode(1);    

    Solution *solution = new Solution();

    vector<int> res;    
    res = solution->postorderTraversal(p);

    vector<int>::iterator it;
    for (it = res.begin(); it != res.end(); it++) {
        cout << *it << endl;
    }

}

 

leetcode - [6]Binary Tree Postorder Traversal

标签:des   style   blog   color   io   os   ar   for   div   

原文地址:http://www.cnblogs.com/zhuangzebo/p/3991521.html

(0)
(0)
   
举报
评论 一句话评论(0
登录后才能评论!
© 2014 mamicode.com 版权所有  联系我们:gaon5@hotmail.com
迷上了代码!