LeetCode107. 二叉树的层序遍历 II

先固定队列的大小,以此确定每层的个数,将出队元素入栈(先右孩子再左孩子),最后输出即可

/**
 * Definition for a binary tree node.
 * struct TreeNode {
 *     int val;
 *     TreeNode *left;
 *     TreeNode *right;
 *     TreeNode() : val(0), left(nullptr), right(nullptr) {}
 *     TreeNode(int x) : val(x), left(nullptr), right(nullptr) {}
 *     TreeNode(int x, TreeNode *left, TreeNode *right) : val(x), left(left), right(right) {}
 * };
 */
class Solution 
{
public:
    vector<vector<int>> levelOrderBottom(TreeNode* root) 
    {
        stack<TreeNode*> st;    //存储输出节点
        deque<TreeNode*> queue; 
        vector<vector<int>> res;//存储最终结果
        vector<int> sizeOfEachLevel;    //存储每层节点个数

        if (root == NULL) return res;
        queue.push_back(root);
        /* 层次遍历,按照顺序将节点入栈,并记录每层节点个数 */
        while (!queue.empty())
        {   
            int size = queue.size();
            sizeOfEachLevel.push_back(size);
            for (int i = 0; i < size; i++)
            {
                TreeNode* cur = queue.front();
                queue.pop_front();
                st.push(cur);
                if (cur->right != NULL)
                    queue.push_back(cur->right);
                if (cur->left != NULL)
                    queue.push_back(cur->left);
            }
        }
        /* 输出 */
        /* 从最后一层倒序输出 */
        for (int i = sizeOfEachLevel.size() - 1; i >= 0; i--)
        {
            vector<int> curLevel;   //存储当前层结果
            int j = sizeOfEachLevel[i]; //当前层节点总数
            for (; j > 0; j--)
            {
                int top = st.top()->val;
                st.pop();
                curLevel.push_back(top);
            }
            res.push_back(curLevel);
        }
        return res;
    }
};

相关推荐

  1. 107. II

    2024-06-06 08:58:01       59 阅读
  2. LeetCode107. II

    2024-06-06 08:58:01       31 阅读
  3. leetcode 102.

    2024-06-06 08:58:01       48 阅读

最近更新

  1. docker php8.1+nginx base 镜像 dockerfile 配置

    2024-06-06 08:58:01       94 阅读
  2. Could not load dynamic library ‘cudart64_100.dll‘

    2024-06-06 08:58:01       100 阅读
  3. 在Django里面运行非项目文件

    2024-06-06 08:58:01       82 阅读
  4. Python语言-面向对象

    2024-06-06 08:58:01       91 阅读

热门阅读

  1. 用canvas整个烟花效果

    2024-06-06 08:58:01       29 阅读
  2. 【深度学习】plt.xlabel ‘str‘ object is not callable

    2024-06-06 08:58:01       24 阅读
  3. 设计模式之备忘录模式

    2024-06-06 08:58:01       29 阅读
  4. LSTM 词语模型上的动态量化

    2024-06-06 08:58:01       24 阅读
  5. 面试高频问题----3

    2024-06-06 08:58:01       28 阅读
  6. IO转换流

    2024-06-06 08:58:01       27 阅读
  7. springboot项目Redis统计在线用户

    2024-06-06 08:58:01       29 阅读
  8. 怎么排查native层的bug

    2024-06-06 08:58:01       24 阅读
  9. 【k8s的三种探针】

    2024-06-06 08:58:01       25 阅读