[关闭]
@w1024020103 2017-06-25T23:54:24.000000Z 字数 908 阅读 546

Binary Tree Level Order Traversal

LeetCode LintCode


在此输入正文
image_1bjfrj3aht1nvqq1eoi1dpi1nb013.png-35.6kB

注意:Level Order Traversal的时候基本都用BFS
这道题是二叉树上的宽度优先搜索

  1. /**
  2. * Definition of TreeNode:
  3. * public class TreeNode {
  4. * public int val;
  5. * public TreeNode left, right;
  6. * public TreeNode(int val) {
  7. * this.val = val;
  8. * this.left = this.right = null;
  9. * }
  10. * }
  11. */
  12. public class Solution {
  13. /**
  14. * @param root: The root of binary tree.
  15. * @return: Level order a list of lists of integer
  16. */
  17. public ArrayList<ArrayList<Integer>> levelOrder(TreeNode root) {
  18. // write your code here
  19. ArrayList<ArrayList<Integer>> results = new ArrayList<>();
  20. if (root == null){
  21. return results;
  22. }
  23. Queue<TreeNode> queue = new LinkedList<TreeNode>();
  24. queue.offer(root);
  25. while (!queue.isEmpty()){
  26. ArrayList<Integer> level = new ArrayList<>();
  27. int size = queue.size();
  28. for (int i = 0; i < size; i++){
  29. TreeNode head = queue.poll();
  30. level.add(head.val);
  31. if (head.left != null){
  32. queue.offer(head.left);
  33. }
  34. if (head.right != null){
  35. queue.offer(head.right);
  36. }
  37. }
  38. results.add(level);
  39. }
  40. return results;
  41. }
  42. }

image_1bjfrq0u4j1ev2d1kjo1a1g17k71g.png-108.6kB

这个视频讲得很好:
https://www.youtube.com/watch?v=86g8jAQug04

添加新批注
在作者公开此批注前,只有你和作者可见。
回复批注