• 30 Day Challenge Day 3 | Leetcode 145. Binary Tree Postorder Traversal


    题解

    如果是刚做过 144. preorder traversal 的题,这道题不难延伸,虽然这是一道“hard”题。

    postorder是“left ==> right ==> root”的遍历顺序,还是应用栈(stack)的数据结构,由于树的遍历必须是自上而下,也就是root必须在前面,不妨把问题转换乘“root ==> right ==> left”的顺序遍历,应用类似 144. preoder 的方法,就容易得到一个以这个顺序遍历的数据vector。只是要记得在函数返回前将这个vector倒序,这样就使得顺序变回原来的要求。

    如果过程想象不清楚的话,画图手动实现一个例子是个比较好的方法去检验。

    class Solution {
    public:
        vector<int> postorderTraversal(TreeNode* root) {
            vector<int> ret;
            stack<TreeNode*> s;
    
            if(!root) return ret;
            
            s.push(root);
            
            while(!s.empty()) {
                TreeNode* n = s.top();
                s.pop();
                
                ret.push_back(n->val);
                
                if(n->left) s.push(n->left);
                if(n->right) s.push(n->right);
            }
            
            reverse(ret.begin(), ret.end());
            
            return ret;
        }
    };
    
  • 相关阅读:
    sql统计
    如何让文本框内的提示信息在激活文本框时清空
    Button onclick事件
    CustomValidator 的应用
    DjangoORM数据库创建
    HDU3685 几何+重心+凸包+判定锐角三角形
    CF181c
    POJ2187 旋转卡壳+凸包
    HDU2907凸包+凹面
    HDU2108+几何+判断凸多边形
  • 原文地址:https://www.cnblogs.com/casperwin/p/13521232.html
Copyright © 2020-2023  润新知