1. 题目描述
从上往下打印出二叉树的每个节点,同层节点从左至右打印。
2. 题目分析
(1)一道二叉树经典的例题,二叉树的层次遍历
(2)大致思想就是,创建一个队列,将根节点(root)加入,分别遍历他的左子树和右子树,遍历左子树的同时,将左子树的左子树和右子树加入队列,遍历右子树的同时,将左子树的左子树和右子树加入队列。
(3)依次类推,最后返回List。
3. 题目代码
public static ArrayList<Integer> PrintFromTopToBottom(TreeNode root) { ArrayList<Integer> arrayList = new ArrayList<Integer>(); // 存储遍历的数组 Queue<TreeNode> queue = new LinkedList<TreeNode>(); if (root == null) { return arrayList; } queue.add(root); while (queue.size() != 0) { TreeNode temp = queue.poll(); if(temp.left != null) { queue.add(temp.left); } if(temp.right != null) { queue.add(temp.right); } arrayList.add(temp.val); } return arrayList; }