zoukankan      html  css  js  c++  java
  • 二叉树非递归遍历方法小结

    二叉树的遍历是面试中经常考察的,其实前中后三种顺序的遍历都大同小异,自己模拟两个栈用笔画画我相信是不难写出代码的。现罗列如下,均是自己所写已通过leetcode。

     1 class Solution {
     2 public:
     3     vector<int> preorderTraversal(TreeNode *root) {
     4         vector<int> out;
     5         stack<TreeNode*> s;
     6         s.push(root);
     7         while(!s.empty() && root){
     8             TreeNode *node = s.top();
     9             out.push_back(node->val);
    10             s.pop();
    11             if(node->right) s.push(node->right);
    12             if(node->left)  s.push(node->left);
    13         }
    14         return out;
    15         
    16     
    17     }
    18     vector<int> inorderTraversal(TreeNode *root) {
    19         stack<TreeNode *> s;
    20         vector<int> out;
    21         TreeNode *node = root;
    22         bool done = false;
    23         while(!done){
    24             if(node){
    25                 s.push(node);
    26                 node = node->left;
    27             }else {
    28                 if(s.empty()) done = true;
    29                 else{
    30                     node = s.top();
    31                     s.pop();
    32                     out.push_back(node->val);
    33                     node = node->right;
    34                 }
    35             }
    36         }
    37         return out;
    38     }
    39     vector<int> postorderTraversal(TreeNode *root) {
    40        vector<int> out;
    41        stack<TreeNode*> s;
    42        TreeNode* node = root;
    43        s.push(node);
    44        while(!s.empty()&&node){
    45            node = s.top();
    46            out.push_back(node->val);
    47            s.pop();
    48            if(node->left) s.push(node->left);
    49            if(node->right)s.push(node->right);
    50        }
    51        reverse(out.begin(),out.end());
    52        return out;
    53     }
    54 };
  • 相关阅读:
    优化SQL查询:如何写出高性能SQL语句
    提高SQL执行效率的16种方法
    Spring Ioc DI 原理
    java内存泄漏
    转:js闭包
    LeetCode Best Time to Buy and Sell Stock III
    LeetCode Best Time to Buy and Sell Stock with Cooldown
    LeetCode Length of Longest Fibonacci Subsequence
    LeetCode Divisor Game
    LeetCode Sum of Even Numbers After Queries
  • 原文地址:https://www.cnblogs.com/134feilei/p/3850203.html
Copyright © 2011-2022 走看看