题目描述:
从上往下打印出二叉树的每个节点,同层节点从左至右打印。
解题思路:
百度:二叉树遍历
二叉树的层次遍历的定义:
即按照层次访问,通常用队列来做。访问根,访问子女,再访问子女的子女(越往后的层次越低)(两个子女的级别相同)
1.结合层次遍历的定义,可判断此题实际为二叉树层次遍历
实际操作:
public ArrayList<Integer> PrintFromTopToBottom(TreeNode root) {
ArrayList<Integer> list = new ArrayList<>();
//特殊情况
if (root==null) return list;
Queue<TreeNode> queue= new LinkedList<TreeNode>();
//用队列来保存二叉树
queue.add(root);
while (!queue.isEmpty()) {
//获取队列内的元素
TreeNode treeNode = queue.poll();
//将左右子树节点插入队列
if (treeNode.left != null){queue.add(treeNode.left);}
if (treeNode.right != null) {queue.add(treeNode.right);}
list.add(treeNode.val);
}
return list;
}