• Binary Tree Level Order Traversal II


    同样,使用两个队列进行层间循环和层内循环。最后使用一个栈进行转置。

    PS:

    特别注意的是,对于vector的使用,在赋值的阶段会发生内存报错的情况:

    vector<int> vec1;

    vec1[0]=1

    直接使用下标赋值是错误的,应使用的是push_back()函数进行数值添加。

    而,在调用已经赋值的变量时,可以使用下标,如:
    int num=vec1[0];

    一定注意!!

     1 /**
     2  * Definition for a binary tree node.
     3  * struct TreeNode {
     4  *     int val;
     5  *     TreeNode *left;
     6  *     TreeNode *right;
     7  *     TreeNode(int x) : val(x), left(NULL), right(NULL) {}
     8  * };
     9  */
    10 class Solution {
    11 public:
    12     vector<vector<int>> levelOrderBottom(TreeNode* root) {
    13         vector<vector<int>> res;
    14 
    15         stack<vector<int>> st;
    16         
    17         if(root==NULL)
    18             return res;
    19         TreeNode * temp;
    20         queue<TreeNode *> q;
    21         q.push(root);
    22         while(!q.empty())  //层间循环
    23         {
    24             queue<TreeNode *> q2;
    25             vector<int> level;
    26             while(!q.empty())  //层内的节点循环
    27             {
    28                 temp=q.front();
    29                 q.pop();
    30                 level.push_back(temp->val);
    31                 if(temp->left!=NULL)
    32                     q2.push(temp->left);
    33                 if(temp->right!=NULL)
    34                     q2.push(temp->right);
    35             }
    36             q=q2;
    37             st.push(level);
    38         }
    39         while(!st.empty())
    40         {
    41             res.push_back(st.top());
    42             st.pop();
    43         }
    44         return res;
    45      }
    46 };
  • 相关阅读:
    决战72hours
    学习中的十七条建议
    数学建模终结篇
    数学建模(7)建模开始
    ASP升级程序
    为blog挑选logo
    Mysql源代码分析系列(4): 主要调用流程(续)转载
    AS学习步骤
    什么是敏捷软件测试[转]
    Mysql源代码分析(6): Plugin架构介绍(续)转载
  • 原文地址:https://www.cnblogs.com/aguai1992/p/4629522.html
Copyright © 2020-2023  润新知