层次遍历,修改之前,队列中元素的个数就是每层的节点数。
从上往下打印二叉树
http://www.nowcoder.com/questionTerminal/7fe2212963db4790b57431d9ed259701
层次遍历,修改之前,队列中元素的个数就是每层的节点数。
层级变量,使用队列。需要提前保留队列中的元素个数,因为添加元素后,调用queue.size()的结果会变化
/**
* 从上往下打印出二叉树的每个节点,同层节点从左至右打印。
* @param root 二叉树
* @return 打印结果
*/
public ArrayList<Integer> PrintFromTopToBottom(TreeNode root) {
LinkedList<TreeNode> queue=new LinkedList<>();
ArrayList<Integer> res=new ArrayList<>();
if(root==null){
return res;
}
queue.addLast(root);
while (!queue.isEmpty()){
int size=queue.size();
for(int i=0;i<size;i++){
TreeNode cur=queue.removeFirst();
res.add(cur.val);
if(cur.left!=null){
queue.addLast(cur.left);
}
if(cur.right!=null){
queue.addLast(cur.right);
}
}
}
return res;
}
查看16道真题和解析