题解 | 求二叉树的层序遍历 注意 队列的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;
    }
};

全部评论

相关推荐

03-26 13:04
已编辑
电子科技大学 算法工程师
xiaowl:你这个简历“条目上”都比较有深度性,但是实际上面试官又没法很好的评估你是怎么达到很多看上去很厉害的结果的。要避免一些看上去很厉害的包装,比如高效的内存复用策略的表达,如果仅是简单的一些内存共享机制,而且面试上也没有深挖的空间,就不要这样表达。比如,工程化模式本质上可能就是定义了一些abstract class,那也就没特别多值得讲的内容。建议简历上应该侧重那些你花了大量时间和精力解决、研究的问题,不要过分追求“丰富”,而是关注在技术深入度、问题解决能力的表现上。
没有实习经历,还有机会进...
点赞 评论 收藏
分享
评论
点赞
收藏
分享

创作者周榜

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