题解 | 求二叉树的层序遍历 注意 队列的size可以发挥很大作用

求二叉树的层序遍历

https://www.nowcoder.com/practice/04a5560e43e24e9db4595865dc9c63a3

/**
 * struct TreeNode {
 *	int val;
 *	struct TreeNode *left;
 *	struct TreeNode *right;
 *	TreeNode(int x) : val(x), left(nullptr), right(nullptr) {}
 * };
 */
#include <queue>
#include <vector>
class Solution {
public:
    /**
     * 代码中的类名、方法名、参数名已经指定,请勿修改,直接返回方法规定的值即可
     *
     * 
     * @param root TreeNode类 
     * @return int整型vector<vector<>>
     */
    vector<vector<int> > levelOrder(TreeNode* root) {
        // write code here
        
        vector<vector<int>> num;
        if(root==nullptr)return num;
        queue<TreeNode*> read;
        read.push(root);
       // int i=0;int j=1;
        while(!read.empty()){
            /*
            int x=j;
            j=0;
            int k=0;
            可以利用队列的size来获取参数
            */
            int x=read.size();
            vector<int> a;
            int i=0;
            while(i<x){
                TreeNode* cur=read.front();
                //num[i][k]=cur->val;
                //二层容器不是这样用的 它本质是容器的容器。所以要push一个容器
                a.push_back(cur->val);
                read.pop();
                if(cur->left){
                    read.push(cur->left);
                    //i++;//使用size 不需要i++了
                }
                if(cur->right){
                   read.push(cur->right); 
                   //j++;
                }
                //k++;
                i++;
            }
            //i++;
            num.push_back(a);
        }
        return num;
    }
};

全部评论

相关推荐

点赞 评论 收藏
分享
评论
点赞
收藏
分享

创作者周榜

更多
牛客网
牛客网在线编程
牛客网题解
牛客企业服务