zoukankan      html  css  js  c++  java
  • LeetCode 102 ——二叉树的层次遍历

    1. 题目

    2. 解答

    定义一个存放树中数据的向量 data,一个存放树的每一层数据的向量 level_data 和一个存放每一层节点的队列 node_queue。

    如果根节点非空,根节点进队,然后循环以下过程直至队列为空:

      1. 得到队列的大小,即为树中当前层的节点个数。队列元素循环出队,并将节点的值加入 level_data,如果节点有左右子节点,左右子节点入队
      1. 将 level_data 加入 data 中并清空 level_data
    /**
     * Definition for a binary tree node.
     * struct TreeNode {
     *     int val;
     *     TreeNode *left;
     *     TreeNode *right;
     *     TreeNode(int x) : val(x), left(NULL), right(NULL) {}
     * };
     */
    class Solution {
    public:
        vector<vector<int>> levelOrder(TreeNode* root) {
            
            vector<vector<int>> data;
            vector<int> level_data;
            queue<TreeNode *> node_queue;
            int node_num = 1;
            TreeNode* temp = NULL;
            
            if (root) node_queue.push(root);
            
            while (!node_queue.empty())
            {
                node_num = node_queue.size();
                for (int i = 0; i < node_num; i++)
                {
                    temp = node_queue.front();
                    node_queue.pop();
                    level_data.push_back(temp->val);
                    
                    if (temp->left)     node_queue.push(temp->left);
                    if (temp->right)    node_queue.push(temp->right);
                }
                
                data.push_back(level_data);
                level_data.clear();
            }
            
            return data;
        }
    };
    

    获取更多精彩,请关注「seniusen」!

  • 相关阅读:
    .OBJ est1.axf: Error: L6230W: Ignoring --entry command. Cannot find argumen 'Reset_Handler'
    线程详细剖析(四)
    线程详细剖析(三)
    线程详细剖析(二)
    线程详细剖析(一)
    CAN总线相关的几个gitlab代码
    进程详细剖析(三)
    C++实现多级排序
    C/C++读写二进制文件
    C++11新特性
  • 原文地址:https://www.cnblogs.com/seniusen/p/9973663.html
Copyright © 2011-2022 走看看