1.题目
从上往下打印出二叉树的每个节点,同层节点从左至右打印(实质为层次遍历)。
2.思路
用ArrayList来模拟队列从上到下,从左到右,,先入先出,画出一个二叉树即可大致模拟出该过程。
3.代码
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 {
//用ArrayList来模拟队列,画出一个二叉树即可大致模拟出该过程。
public ArrayList<Integer> PrintFromTopToBottom(TreeNode root) {
ArrayList<Integer> list =new ArrayList<Integer> ();
//注意这里是TreeNode类型
ArrayList<TreeNode> queue=new ArrayList<TreeNode> ();
if(root==null) return list;
queue.add(root);
while(queue.size()!=0){
TreeNode tmp=queue.remove(0);//取出队列的首部元素,所以可以实现先入先出。
if(tmp.left!=null) queue.add(tmp.left);
if(tmp.right!=null) queue.add(tmp.right);
list.add(tmp.val);
}
return list;
}
}