从上往下打印二叉树
题目描述
从上往下打印出二叉树的每个节点,同层节点从左至右打印。
具体实现:
**解题思路:**利用一个队列来实现,首先把根结点root入队,然后如果队列不为空则进行循环:
首先出队一个用node接收出队结点,判断node是否有左右子结点,有则依次入队,然后就把当前结点node的值加入list(这是最后的结果数组),最后重复循环直到队列空。
public ArrayList<Integer> PrintFromTopToBottom(TreeNode root) {
ArrayList<Integer> list = new ArrayList<Integer>();
if(root == null)
return list;
Queue<TreeNode> q = new LinkedList<TreeNode>();
q.add(root);
while(!q.isEmpty()) {
TreeNode node = q.poll();//当前结点出队
if(node.left != null) {
q.add(node.left);//左子树入队
}
if(node.right != null) {
q.add(node.right);//右子树入队
}
list.add(node.val);//保存当前结点值
}
return list;
}