• Binary Tree Postorder Traversal


    LeetCode上一道题目

    递归实现后序遍历

    我在OJ上直接使用了Tag的方法标志是第几次访问结点来区分,代码如下:

     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         if(root==NULL) 
     6             return result;
     7         vector<TreeNode*> stack;
     8         unordered_set<TreeNode*> tags;
     9         stack.push_back(root);
    10         while(!stack.empty()){
    11             root = stack.back();
    12             if(root->left&&tags.count(root->left)==0) {
    13                 stack.push_back(root->left);
    14                 tags.insert(root->left);
    15                 continue;
    16             }
    17             if(root->right&&tags.count(root->right)==0){
    18                 stack.push_back(root->right);
    19                 tags.insert(root->right);
    20                 continue;
    21             }
    22             result.push_back(root->val);
    23             stack.pop_back();
    24         }
    25         return result;
    26     }

    今天看到园子一位作者阿牧遥的博客,看到了另一个思路。

    判断前驱节点是父亲还是左儿子实现是第几次访问或者说是左右子树是否已经遍历完毕。

    阿牧遥的这篇博客讲的挺详细的。

  • 相关阅读:
    MyBatis原理分析
    oracle修改数据遇到的坑
    oracle查询时遇到的坑
    maven镜像
    易错题
    binlog2sql 安装使用
    Archery SQL审核平台搭建
    Docker安装
    夜莺n9e监控搭建
    influxdb安装
  • 原文地址:https://www.cnblogs.com/mike442144/p/leetcode.html
Copyright © 2020-2023  润新知