zoukankan      html  css  js  c++  java
  • 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?

    思路:

    用一个栈来保存节点。因为需要记录是否访问了左右子节点,所以用一个pair的第一位来记录当前的访问状态。

    代码:

     1     vector<int> postorderTraversal(TreeNode *root) {
     2         // IMPORTANT: Please reset any member data you declared, as
     3         // the same Solution instance will be reused for each test case.
     4         vector<int> result;
     5         result.clear();
     6         stack<pair<TreeNode*, int> > treeStack;
     7         if(root == NULL)
     8             return result;
     9         treeStack.push(pair<TreeNode*, int>(root, 0));
    10         while(!treeStack.empty()){
    11             TreeNode *tNode = treeStack.top().first;
    12             int state = treeStack.top().second;
    13             treeStack.pop();
    14             if(state == 0){
    15                 treeStack.push(pair<TreeNode*, int>(tNode, 1));
    16                 if(tNode->left){
    17                     treeStack.push(pair<TreeNode*, int>(tNode->left, 0));    
    18                 }
    19             }
    20             else if(state == 1){
    21                 treeStack.push(pair<TreeNode*, int>(tNode, 2));
    22                 if(tNode->right){
    23                     treeStack.push(pair<TreeNode*, int>(tNode->right, 0));
    24                 }
    25             }
    26             else{
    27                 result.push_back(tNode->val);
    28             }
    29         }
    30         return result;
    31     }
  • 相关阅读:
    zendstudio xdebug 配置
    一键清除cvs/svn 目录
    mysql 引擎区分
    ngnix 配置
    linux下mysql安装、目录结构、配置
    tomacat 配置ssl协议
    HTML中<title>与<h1>区别
    HTML中<strong>与<b>,<em>与<i>标签的区别
    bootstrap的总结1
    JavaScript的DOM(文档对象)基础语法总结2
  • 原文地址:https://www.cnblogs.com/waruzhi/p/3414827.html
Copyright © 2011-2022 走看看