• LeetCode 102 二叉树的层序遍历


    题目描述链接:https://leetcode-cn.com/problems/binary-tree-level-order-traversal/

    解题思路:参考官方题解,解题思路如下:对于二叉树的层序遍历,首先应该考虑到的数据结构便是队列,利用队列现进先出的特性,可以很方便的解决此题。

    (1)根节点入队。

    (2)当队列不为空时,开始如下迭代过程:获取当下队列长度,在当下队列长度控制下开始内层循环,访问该长度下队列的每一个元素,然后出队并扩展该节点(扩展出下一层元素)。当该长度访问完后,即访问完第k层元素。然后开始访问第k+1层元素,并扩展第k+2层元素,一直到队列为空时结束。具体LeetCode下C++代码如下:

    /**
     * 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) {
           queue<TreeNode *>q;//层次遍历所用队列
           vector<vector<int>>res;//保存结果
           if(!root)
              return res;
           q.push(root);
           while(!q.empty()){
               int len=q.size();
               vector<int>temp;
               for(int i=0;i<len;++i){
                   TreeNode *m=q.front();//->val;
                   temp.push_back(m->val);
                   q.pop();
                   if(m->left){
                       q.push(m->left);
                   }
                   if(m->right){
                       q.push(m->right);
                   }
                      
               }
               res.push_back(temp);
           }
    
            return res;   
            
        }
    
    
    
    
    
    };
  • 相关阅读:
    poj1862---变形虫(贪心)
    poj1833---字典序算法
    poj1799---解析几何
    poj1665
    poj1663---纯粹找规律
    poj1658
    poj1657---chessboard
    poj1656---数黑格子
    poj1617---columnar encryption
    查找两个文件的相同之处,不同之处
  • 原文地址:https://www.cnblogs.com/zzw-/p/13289527.html
Copyright © 2020-2023  润新知