目 录
描述:
不分行从上往下打印出二叉树的每个节点,同层节点从左至右打印。例如输入{8,6,10,#,#,2,1},如以下图中的示例二叉树,则依次打印8,6,10,2,1(空节点不打印,跳过),请你将打印的结果存放到一个数组里面,返回。
思路:
创建一个队列:1.把 root 入队列,2.出一个节点,3.访问节点,4.将当前节点的左子树入队列,将当前右子树入队列(注意判断空)。依次重复 2 3 4步骤即可。
import java.util.Queue;
import java.util.LinkedList;
import java.util.ArrayList;
/**
public class TreeNode {
int val = 0;
TreeNode left = null;
TreeNode right = null;
public TreeNode(int val) {
this.val = val;
}
}
*/
public class Solution {
public ArrayList<Integer> PrintFromTopToBottom(TreeNode root) {
if(root == null){
return new ArrayList<Integer>();
}
Queue<TreeNode> q = new LinkedList<>();
ArrayList<Integer> result = new ArrayList<>();
q.offer(root);
while(!q.isEmpty()){
TreeNode father = q.poll();
result.add(father.val);
if(father.left != null){
q.offer(father.left);
}
if(father.right != null){
q.offer(father.right);
}
}
return result;
}
}