zoukankan      html  css  js  c++  java
  • leetcode

    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;
        }
    
    }
  • 相关阅读:
    BZOJ 1452 Count(二维树状数组)
    BZOJ 1407 Savage(拓展欧几里得)
    BZOJ 1415 聪聪和可可(期望DP)
    BZOJ 1406 密码箱(数论)
    最大流小结
    UVA6531Go up the ultras
    二分图小结
    Codeforces Round #243 (Div. 1)
    图论模板集合
    zoj3416 Balanced Number
  • 原文地址:https://www.cnblogs.com/zhuangzebo/p/3991521.html
Copyright © 2011-2022 走看看