107. Binary Tree Level Order Traversal II 遍历二叉树2

Given a binary tree, return the bottom-up level order traversal of its nodes' values. (ie, from left to right, level by level from leaf to root).

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

    3
   / \
  9  20
    /  \
   15   7

return its bottom-up level order traversal as:

[
  [15,7],
  [9,20],
  [3]
]

题意:用广度优先的方式,遍历二叉树
解法:借助队列存储节点,提前保存每一层的节点数量

  1. /**
  2. * Definition for a binary tree node.
  3. * public class TreeNode {
  4. * public int val;
  5. * public TreeNode left;
  6. * public TreeNode right;
  7. * public TreeNode(int x) { val = x; }
  8. * }
  9. */
  10. public class Solution {
  11. public List<List<int>> LevelOrderBottom(TreeNode root) {
  12. List<List<int>> result = new List<List<int>>();
  13. if (root == null) return result;
  14. Queue<TreeNode> queue = new Queue<TreeNode>();
  15. queue.Enqueue(root);
  16. while (queue.Count > 0) {
  17. List<int> curLevel = new List<int>();
  18. int count = queue.Count;
  19. for (int i = 0; i < count; i++) {
  20. TreeNode curNode = queue.Dequeue();
  21. curLevel.Add(curNode.val);
  22. if (curNode.left != null) queue.Enqueue(curNode.left);
  23. if (curNode.right != null) queue.Enqueue(curNode.right);
  24. }
  25. result.Add(curLevel);
  26. }
  27. result.Reverse();
  28. return result;
  29. }
  30. }






posted @ 2017-06-18 21:40  xiejunzhao  阅读(146)  评论(0)    收藏  举报