首页
学习
活动
专区
圈层
工具
发布
首页
学习
活动
专区
圈层
工具
MCP广场
社区首页 >问答首页 >leetcode中的二叉树层次顺序遍历

leetcode中的二叉树层次顺序遍历
EN

Stack Overflow用户
提问于 2018-10-02 21:51:13
回答 1查看 199关注 0票数 1

尝试运行代码"terminate called throwing an instance of 'std::bad_alloc‘what():std::bad_alloc“代码时出现错误:

代码语言:javascript
运行
复制
#include<bits/stdc++.h>
using namespace std;

class Solution {
public:

    vector<vector<int>> levelOrder(TreeNode* root) {
        int d = height(root);
        vector<int> lol[d];
        vector<vector<int>> ans;
        queue<TreeNode*> q;
        if(root!=NULL)
            q.push(root);
        for(int i=0; i<=d;i++){
            ans.push_back(level(i,q,lol[i]));
        }
        return ans;
    }

    vector<int> level(int i,queue<TreeNode*> q,vector<int> lol){
        if (q.size() != 0)
        {
            for(int a=0;a<=i;a++){
                lol.push_back(q.front()->val);
                q.push(q.front()->left);
                q.push(q.front()->right);
                q.pop();
            }
        }
        return lol;
    }

    int height(TreeNode* root){
        if (root==NULL)
            return 0;
        else{
            int lef = height(root->left) + 1;
            int rig = height(root->right) + 1;
            if(lef>rig)
                return lef;
            else
                return rig;
        }
    }
};

输出格式为:[3,9,20,15,7]

谁能说出我的代码中的错误在哪里?我刚开始用C++和leetcode编程,所以很难找到错误。请帮帮忙。

EN

Stack Overflow用户

发布于 2018-10-02 21:59:13

我的猜测是,您将节点推入队列,而不检查它们是否为空。当从队列中弹出时,你也可以在没有检查的情况下取消引用它们。

票数 0
EN
查看全部 1 条回答
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/52609783

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档