[LeetCode] 145. Binary Tree Postorder Traversal

来源:互联网 发布:天刀离玉堂捏脸数据 编辑:程序博客网 时间:2024/05/16 01:16

思路:
第一个还是简单的递归版本. 第二个是iterative版本. 第二个就是做一个反向preorder遍历, 然后再逆转结果表即可.

void helper(vector<int>& res, TreeNode* root) {    if (! root) return;    helper(res, root->left);    helper(res, root->right);    res.push_back(root->val);}vector<int> postorderTraversal(TreeNode* root) {    vector<int> res;    helper(res, root);    return res;}
vector<int> postorderTraversal(TreeNode* root) {    vector<int> res;    if (! root) return res;    stack<TreeNode*> stk;    stk.push(root);    while (! stk.empty()) {        TreeNode* cur = stk.top();        stk.pop();        res.push_back(root->val);        if (root->left)            stk.push(root->left);        if (root->right)            stk.push(root->right);    }    reverse(res.begin(), res.end());    return res;}
0 0