二叉树的层序遍历
    给你一个二叉树,请你返回其按 层序遍历 得到的节点值。 (即逐层地,从左到右访问所有节点)。

    示例:
    二叉树:[3,9,20,null,null,15,7],
    3
    / \
    9 20
    / \
    15 7
    返回其层次遍历结果:

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

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

    [1,2,3,4,5]
    [[1],[2,3],[4,5]]

    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. class Solution {
    11. //queue 还是stack
    12. List<List<Integer>> res =new ArrayList<List<Integer>>();
    13. public List<List<Integer>> levelOrder(TreeNode root) {
    14. if(root==null){
    15. return res;
    16. }
    17. //Stack<TreeNode> stack= new Stack<TreeNode>();//stack.remove(0);
    18. LinkedList<TreeNode> stack = new LinkedList<TreeNode>();//remove();或者remove(0)
    19. stack.add(root);
    20. while(!stack.isEmpty()){//stack.size() 都可以
    21. List<Integer> list =new ArrayList<Integer>();
    22. TreeNode node =null;
    23. int size = stack.size();//一定要放外面 否则stack.size()的值是变化的。
    24. for(int i=0;i<size;i++){
    25. node = stack.remove(0);
    26. list.add(node.val);
    27. if(node.left!=null){//放循环里面,不然丢数据。
    28. stack.add(node.left);
    29. }
    30. if(node.right!=null){
    31. stack.add(node.right);
    32. }
    33. }
    34. res.add(list);
    35. }
    36. return res;
    37. }
    38. }