一天一道LeetCode

本系列文章已全部上传至我的github,地址:ZeeCoder‘s Github

欢迎大家关注我的新浪微博,我的新浪微博

欢迎转载,转载请注明出处

(一)题目

来源: https://leetcode.com/problems/binary-tree-level-order-traversal/

Given a binary tree, return the level order traversal of its nodes’ values. (ie, from left to right, level by level).

For example:

Given binary tree [3,9,20,null,null,15,7],

3

/ \

9 20

/ \

15 7

return its level order traversal as:

[

[3],

[9,20],

[15,7]

]

(二)解题

本题大意:给定一个二叉树,按层的顺序输出各层元素

解题思路:每次将该层元素压入一个queue,然后依次处理这个queue里的每个元素,并把它们的左右节点都压入另一个queue,一直这样处理,直到queue为空。

/**
 * 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) {
        vector<vector<int>> ret;
        if(root==NULL) return ret;
        queue<TreeNode*> que;//用来存放每层的节点
        que.push(root);//先压入根节点
        while(!que.empty())
        {
            vector<int> temp;
            queue<TreeNode*> tmpQue;//存放下一层queue
            while(!que.empty())
            {
                TreeNode* tempNode = que.front();//依次取出queue里的元素进行处理
                que.pop();
                temp.push_back(tempNode->val);//将值压入vector
                if(tempNode->left!=NULL) tmpQue.push(tempNode->left);//处理左节点
                if(tempNode->right!=NULL) tmpQue.push(tempNode->right);//处理右节点
            }
            ret.push_back(temp);//将每层的结果压入返回vector中
            que=tmpQue;.
        }
        return ret;
    }
};

最新文章

  1. [HTML表格]在databases显示行的附加信息
  2. C# async and await
  3. scala学习----柯里化
  4. 【转】编译quickfast解析库(沪深level2行情转码库)
  5. iOS JSPatch 热修复使用
  6. WPA-PSK无线网络破解原理及过程(转)
  7. IOS开发之网络编程--文件压缩和解压缩
  8. Counting Rectangles
  9. mysql 数据库优化
  10. 李洪强漫谈iOS开发[C语言-015]-变量的使用
  11. HTML5 FileAPI读取实例---(一)
  12. Java字符串的最大长度
  13. mysql中的JOIN用法总结
  14. Synchronized与ReentrantLock区别总结(简单粗暴,一目了然)
  15. oracle xe 创建表空间
  16. java 中使用log4j
  17. jquery 实现的全选demo
  18. Vue入门---属性、style和class绑定方法
  19. 给div加滚动条
  20. k-近邻算法 标签分类

热门文章

  1. ios html5 audio 不能自动播放
  2. static class 静态类(Java)
  3. vue移动端组件库vux使用小记
  4. MS SQL Server 2008 R2 常规操作
  5. c++类的声明
  6. Oracle中case用法总结
  7. 酷伯伯实时免费HTTP代理ip爬取(端口图片显示+document.write)
  8. JavaScript 流程语句知识脑图
  9. MVC和MTV模式
  10. k8s Kubernetes v1.10 最简易安装 shell