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},
3
/ \
9 20
/ \
15 7
return its level order traversal as:
[
[3],
[9,20],
[15,7]
]

DFS实现:

  1. /**
  2. * Definition for a binary tree node.
  3. * public class TreeNode {
  4. * int val;
  5. * TreeNode left;
  6. * TreeNode right;
  7. * TreeNode(int x) { val = x; }
  8. * }
  9. */
  10. public class Solution {
  11. // DFS 遍历
  12. public List<List<Integer>> levelOrder(TreeNode root) {
  13. List<List<Integer>> res = new ArrayList<List<Integer>>();
  14. traverse(res, root, 0);
  15. return res;
  16. }
  17.  
  18. public void traverse(List<List<Integer>> res, TreeNode root, int level) {
  19. if (root == null) {
  20. return;
  21. }
  22. if (res.size() > level) {
  23. res.get(level).add(root.val);
  24. } else {
  25. ArrayList list = new ArrayList<Integer>();
  26. list.add(root.val);
  27. res.add(list);
  28. }
  29. traverse(res, root.left, level + 1);
  30. traverse(res, root.right, level + 1);
  31. }
  32.  
  33. }

BFS实现:

  1. /**
  2. * Definition for a binary tree node.
  3. * public class TreeNode {
  4. * int val;
  5. * TreeNode left;
  6. * TreeNode right;
  7. * TreeNode(int x) { val = x; }
  8. * }
  9. */
  10. public class Solution {
  11. // BFS遍历打印
  12. public List<List<Integer>> levelOrder(TreeNode root) {
  13. List<List<Integer>> res = new LinkedList<List<Integer>>();
  14. if (root == null)
  15. return res;
  16. LinkedList<TreeNode> queue = new LinkedList<TreeNode>();
  17. queue.add(root);
  18. ArrayList<Integer> list = new ArrayList<Integer>();
  19. int cur = 1;
  20. int nextLevel = 0;
  21. while (!queue.isEmpty()) {
  22. TreeNode tmp = queue.poll();
  23.  
  24. cur--;
  25. if (tmp.left != null) {
  26. queue.add(tmp.left);
  27. nextLevel++;
  28. }
  29. if (tmp.right != null) {
  30. queue.add(tmp.right);
  31. nextLevel++;
  32. }
  33. list.add(tmp.val);
  34. if (cur == 0) {
  35. res.add(list);
  36. list = new ArrayList<Integer>();
  37. cur = nextLevel;
  38. nextLevel = 0;
  39. }
  40.  
  41. }
  42. return res;
  43. }
  44.  
  45. }

Binary Tree Level Order Traversal - leetcode - java的更多相关文章

  1. leetcode 107 Binary Tree Level Order Traversal II ----- java

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

  2. Binary Tree Level Order Traversal [LeetCode]

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

  3. leecode Binary Tree Level Order Traversal II java

    做完这道题,只能说基本功很重要,数组中套数组就不会用了,过几天吧1做了,看自己到底等没. https://oj.leetcode.com/problems/binary-tree-level-orde ...

  4. Java for 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 left ...

  5. LeetCode 102. 二叉树的层次遍历(Binary Tree Level Order Traversal) 8

    102. 二叉树的层次遍历 102. Binary Tree Level Order Traversal 题目描述 给定一个二叉树,返回其按层次遍历的节点值. (即逐层地,从左到右访问所有节点). 每 ...

  6. [LeetCode] Binary Tree Level Order Traversal II 二叉树层序遍历之二

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

  7. [LeetCode] Binary Tree Level Order Traversal 二叉树层序遍历

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

  8. LeetCode:Binary Tree Level Order Traversal I II

    LeetCode:Binary Tree Level Order Traversal Given a binary tree, return the level order traversal of ...

  9. lettcode-102:Binary Tree Level Order Traversal (Java)

    Binary Tree Level Order Traversal 二叉树的层序遍历 两种方式: 1.用两个queue交替表示每一层的节点 2.用两个node,一个表示当前层的最后一个节点,一个表示下 ...

随机推荐

  1. zend studio使用入门

    使用zend studio8建立项目 使用PHP开发工具zend studio8进行PHP网站开发,就需要建立(导入)相应的项目,方法如下:右键左侧Workspace,选择New | PHP Proj ...

  2. Hibernate 配置详解(8)

    hibernate.generate_statistics 这个配置大家应该都很熟悉,用于开启Hibernate统计信息,便于对Hibernate相关性能调试提供数据依据.在开发过程当中,可以把这个选 ...

  3. eclipse工具再学习

    今天下午最后近1小时及晚上2个多小时,我都花费时间在工程环境配置上,自尊心被严重摧残,各种郁闷和抱怨.源头是我部分刷新代码后运行工程依赖的jar报错,后来找同事发现是因为我没更新pom.xml文件,重 ...

  4. Php开发官方IDE ZEND

    From http://www.zend.com/en/products/studio 注:唯一的缺点是收费.

  5. PHP代码,拒绝频繁访问

    一个网站性能有限,如果有人恶意去频繁对页面进行刷新,其实对服务器影响是很大的,导致资源使用非常高,直接影响到其他用户的体验. 那么对于这样的一些频繁访问,我们该如何去拒绝它呢? 我总结了两种方法:第一 ...

  6. apache http配置https

    <一,Lamp系统搭建> yum install httpd httpd-devel mysql mysql-server mysql-devel php php-mysql php-co ...

  7. canvas.js | CLiPS

    canvas.js | CLiPS canvas.js The canvas.js module is a simple and robust JavaScript API for the HTML5 ...

  8. vs debug 快捷键

    命令名 快捷键 说明 调试.应用代码更改 Alt + F10 启动生成操作,利用它可以通过“编辑并继续”功能应用对正在调试的代码所作的更改. 调试.自动窗口 Ctrl + D,Ctrl + A 显示“ ...

  9. hdu1753()模拟大型实景数字相加

    标题信息: 手动求大的实数在一起, pid=1753">http://acm.hdu.edu.cn/showproblem.php?pid=1753 AC代码: /**  *大实数相加 ...

  10. android 多语言适配

    建好android项目后,默认的是有个values文件,该文件下面默认的有strings.xml. 做多语言适配的时候,就需要在创建好的项目中,右键单击res文件夹,选择创建新的xml文件. 然后点击 ...