LeetCode:Binary Tree Postorder Traversal

来源:互联网 发布:软件设计师考试内容 编辑:程序博客网 时间:2024/06/06 11:24

Binary Tree Postorder Traversal

Total Accepted: 81817 Total Submissions: 242139 Difficulty: Hard

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?




















code:

/** * Definition for a binary tree node. * 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> ivec;        if(NULL == root) return ivec;        TreeNode *cur;        TreeNode *pre=NULL;        stack<TreeNode *> s;        s.push(root);        while(!s.empty()){            cur=s.top();            if((NULL==cur->left && NULL==cur->right) ||            (pre!=NULL && (pre==cur->left || pre==cur->right))){                ivec.push_back(cur->val);                s.pop();                pre=cur;            }            else{                if(cur->right!=NULL) s.push(cur->right);                if(cur->left!=NULL) s.push(cur->left);            }        }        return ivec;    }};


0 0
原创粉丝点击