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,#,#,15,7},

DFS遍历方法:

 1 /**
 2  * Definition for binary tree
 3  * struct TreeNode {
 4  *     int val;
 5  *     TreeNode *left;
 6  *     TreeNode *right;
 7  *     TreeNode(int x) : val(x), left(NULL), right(NULL) {}
 8  * };
 9  */
10 class Solution {
11 private:
12     vector<vector<int> > ret;
13 public:
14     void solve(int dep, TreeNode *root)
15     {
16         if (root == NULL)
17             return;
18
19         if (ret.size() > dep)
20         {
21             ret[dep].push_back(root->val);
22         }
23         else
24         {
25             vector<int> a;
26             a.push_back(root->val);
27             ret.push_back(a);
28         }
29
30         solve(dep + 1, root->left);
31         solve(dep + 1, root->right);
32     }
33
34     vector<vector<int> > levelOrder(TreeNode *root) {
35         // Start typing your C/C++ solution below
36         // DO NOT write int main() function
37         ret.clear();
38         solve(0, root);
39
40         return ret;
41     }
42 };

BFS遍历打印

 1 /**
 2  * Definition for binary tree
 3  * struct TreeNode {
 4  *     int val;
 5  *     TreeNode *left;
 6  *     TreeNode *right;
 7  *     TreeNode(int x) : val(x), left(NULL), right(NULL) {}
 8  * };
 9  */
10
11 struct Node
12 {
13     TreeNode *node;
14     int level;
15     Node(){}
16     Node(TreeNode *n, int l):node(n), level(l){}
17 };
18
19 class Solution {
20 private:
21     vector<vector<int> > ret;
22 public:
23     vector<vector<int> > levelOrder(TreeNode *root) {
24         // Start typing your C/C++ solution below
25         // DO NOT write int main() function
26         ret.clear();
27
28         if (root == NULL)
29             return ret;
30
31         queue<Node> q;
32
33         q.push(Node(root, 0));
34
35         vector<int> a;
36         int curLevel = -1;
37
38         while(!q.empty())
39         {
40             Node node = q.front();
41             if (node.node->left)
42                 q.push(Node(node.node->left, node.level + 1));
43             if (node.node->right)
44                 q.push(Node(node.node->right, node.level + 1));
45
46             if (curLevel != node.level)
47             {
48                 if (curLevel != -1)
49                     ret.push_back(a);
50                 curLevel = node.level;
51                 a.clear();
52                 a.push_back(node.node->val);
53             }
54             else
55                 a.push_back(node.node->val);
56
57             q.pop();
58         }
59
60         ret.push_back(a);
61
62         return ret;
63     }
64 };

转载于:https://www.cnblogs.com/chkkch/archive/2012/10/27/2742955.html

LeetCode Binary Tree Level Order Traversal相关推荐

  1. [LeetCode] Binary Tree Level Order Traversal 二叉树层次遍历(DFS | BFS)

    目录: 1.Binary Tree Level Order Traversal - 二叉树层次遍历 BFS 2.Binary Tree Level Order Traversal II - 二叉树层次 ...

  2. [leetcode]Binary Tree Level Order Traversal II

    //层次遍历 逆序 public class Solution { public List<List<Integer>> levelOrderBottom(TreeNode r ...

  3. LeetCode: 107. Binary Tree Level Order Traversal II

    题目 Given a binary tree, return the bottom-up level order traversal of its nodes' values. (ie, from l ...

  4. LeetCode 107. Binary Tree Level Order Traversal II

    LeetCode 107. Binary Tree Level Order Traversal II Solution1:我的答案 比102那道题多了一行代码... /*** Definition f ...

  5. 107. Binary Tree Level Order Traversal II

    题目 Given a binary tree, return the bottom-up level order traversal of its nodes' values. (ie, from l ...

  6. 102. Binary Tree Level Order Traversal

    题目 Binary Tree Level Order Traversal 层次遍历二叉树 链接 Given a binary tree, return the level order traversa ...

  7. Binary Tree Level Order Traversal II 解题思路

    思路: 与Binary Tree Level Order Traversal I 几乎一样.只是最后将结果存放在栈里,然后在栈里再传给向量即可. 再次总结思路: 两个queue,先把第一个放进q1,循 ...

  8. [Leetcode]@python 107. Binary Tree Level Order Traversal II

    题目链接 https://leetcode.com/problems/binary-tree-level-order-traversal-ii/ 题目原文 Given a binary tree, r ...

  9. LeetCode: 102. Binary Tree Level Order Traversal

    题目 Given a binary tree, return the level order traversal of its nodes' values. (ie, from left to rig ...

最新文章

  1. 【建站系列教程】2.2、fiddler手机抓包教程
  2. Linux之父警告全球程序员:我刚发布的5.12内核有bug,你们千万别用
  3. java 集成grizzly_java – 与Jersey和Spring集成Grizzly2.2.X
  4. 计算机蠕虫的存在形式,计算机蠕虫
  5. MySQL grant 权限,分别可以作用在多个层次上
  6. (多变量线性回归)正规方程求解特征参数的推导过程
  7. 用easymock来mock数据
  8. 华为P20云文档空间满了怎么清理_原来华为手机能这样清理垃圾,怪不得别人的手机再用两年不卡顿...
  9. Ubuntu 16.04 安裝chrome
  10. python网易云付费歌曲下载_python 根据网易云歌曲的ID 直接下载歌曲的实例
  11. bootstrap批量删除操作!
  12. 计算机电脑用户名,如何改计算机用户名(administrator)
  13. Dex.top新手使用教程
  14. OrCAD多页原理图器件按页编号的设置
  15. 支付宝红包机器人不加好友解决思路
  16. 商城项目商品列表页的渲染实现(含动图)
  17. HEXOFontmin
  18. 法语初级学习笔记-01-语音
  19. 量化交易 实战第一课 策略入门
  20. 基于Egteks mPower1203仪器和KEYSIGHT N6705仪器的一款智能穿戴产品的低功耗电流测试评估

热门文章

  1. Linux vim打开文件的四种方式
  2. openresty入门示例
  3. Spring/Spring MVC/Spring Boot自动装配机制介绍
  4. Hadoop大数据分布式文件系统hdfs的工作机制
  5. 通过IDEA查看jar包中的依赖关系
  6. 使用tracert命令查看某一个网站的ip地址
  7. 有趣的网页注释代码,保护我方源码
  8. matlab 工业相机 曝光时间_机器视觉入门——光源相机镜头
  9. python能开发手机程序吗_python能否开发安卓应用app?当然可以,python助你轻松搞定...
  10. WIFI网络,两台笔记本互联Oracle,一台是11g,一台是12c