leetcode 每日一题 102. Binary Tree Level Order Traversal

来源:互联网 发布:car软件 编辑:程序博客网 时间:2024/05/22 17:34

一道BFS的题目,也就是层次遍历并输出。由于用的是vector套vector的结构,需要预先定义好,可以用push_back直接存进去


相当于又默写了一遍,还有很多地方不完善,详见注释:


class Solution {public:    vector<vector<int>> levelOrder(TreeNode* root) {        vector<vector<int>> res;  //一个存储返回值结果        vector<int> level;  //用于存储每一层的节点的值                if(root==NULL) return res;                queue<TreeNode*> q;  //用于广度遍历时存储节点   记住类型是TreeNode                TreeNode* node;        int currlev=1;        int nextlev=0;                q.push(root);        while(!q.empty()){            node=q.front();   //这句话少了            q.pop();            currlev--;            level.push_back(node->val);                        if(node->left){                q.push(node->left);                nextlev++;            }            if(node->right){                q.push(node->right);                nextlev++;            }            if(currlev==0){                res.push_back(level);                //nextlev--;                currlev=nextlev;                nextlev=0;  //直接置为0 开始下一层                level.clear();            }        }        return res;    }};

还有一个比较好的递归的算法,原文地址如下:

https://leetcode.com/discuss/81916/clean-recursive-c-solution


class Solution {private: vector<vector<int>> abc;public:void helper(TreeNode* root, int level) {    if(abc.size() < level+1) abc.push_back(vector<int>(1,root->val));    else abc[level].push_back(root->val);    if(root->left) helper(root->left,level+1);    if(root->right) helper(root->right,level+1);}vector<vector<int>> levelOrder(TreeNode* root) {    if(root) helper(root,0);    return abc;   }


0 0
原创粉丝点击
热门问题 老师的惩罚 人脸识别 我在镇武司摸鱼那些年 重生之率土为王 我在大康的咸鱼生活 盘龙之生命进化 天生仙种 凡人之先天五行 春回大明朝 姑娘不必设防,我是瞎子 瓷砖膜风化难撕怎么办 我不能生育老了怎么办 小猫吃自己的奶怎么办 小猫吸自己的奶怎么办 夜里奶涨的厉害怎么办 产后气血不足导致奶水少怎么办 皮凉鞋用水洗了怎么办 被宠物鳄鱼咬了怎么办 做梦被鳄鱼咬了怎么办 梦见被鳄鱼咬了怎么办 1岁宝宝不吃饭怎么办 怀孕啥也不想吃怎么办 一岁宝宝不吃饭怎么办 3岁宝宝不爱吃饭怎么办 1岁半宝宝不吃饭怎么办 9岁儿童不肯吃饭怎么办 一岁半大便干燥怎么办 狗狗突然不出门怎么办 按d键返回桌面怎么办 澳门输了几十万怎么办 被无毒蛇咬了怎么办 家里的蛇被打死怎么办 打死了进家的蛇怎么办 家里的蛇打死了怎么办 猫咪被鱼刺卡了怎么办 狗在宠物店跑了怎么办 遇到吃霸王餐的怎么办 网络上被诈骗了怎么办 高速收费卡掉了怎么办 高速通行卡丢了怎么办 高速免费领了卡怎么办 高速etc卡丢了怎么办 挤完粉刺后红肿怎么办 脓包挤了一个洞怎么办 挤粉刺留下红印怎么办 痘痘拔了留疤了怎么办 痘痘留下的红印怎么办 痘痘自己破了怎么办 纹身一年长痘痘怎么办 喝风油精喝多了怎么办 宝宝吃了紫草膏怎么办