zoukankan      html  css  js  c++  java
  • [leetcode-145-Binary Tree Postorder Traversal]

    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?

    vector<int> postorderTraversal(TreeNode* root)
        {
            vector<int>result;
            if (root == NULL)return result;
            stack<TreeNode*>st;
            bool flag;
            TreeNode* temp;
            do
            {
                while (root != NULL)//左结点入栈
                {
                    st.push(root);
                    root = root->left;
                }
                flag = true;//设置root 为已经访问过
                temp = NULL;//temp 指向栈顶结点的前一个已访问的结点
    
                while (!st.empty() && flag)
                {
                    root = st.top();
                    if (root ->right == temp)//右孩子不存在或者右孩子已经访问过 则访问 root结点
                    {
                        result.push_back(root->val);//访问
                        st.pop();
                        temp = root;//指向被访问的结点
                    }
                    else
                    {
                        root = root->right;
                        flag = false;//设置为未被访问过
                    }
                }
            } while (!st.empty());
            return result;
        }
  • 相关阅读:
    Struts2(二)
    jiqixuexi
    UTF-8
    mysql load
    linux命令(转)
    apache FTP站点源码下载
    linux 命令
    clickhouse 查询
    CDH learning
    nfs
  • 原文地址:https://www.cnblogs.com/hellowooorld/p/6442169.html
Copyright © 2011-2022 走看看