题目:
从上往下打印出二叉树的每个节点,同层节点从左至右打印。
思路:
把树上的节点按题目顺序摘下来,依次放到队列中,依次取队列的头add到ArrayList中
步骤:
//定义一个队列和一个ArrayList
//先把跟节点放到队列中,
//当队列不为空时,取队列的头对应的值放到ArrayList中,
//若队列头节点对应树中的左右节点不空,将左右节点放到队列中,直到队列是空为止。
//最后返回ArrayList
代码:
public class Solution {
public ArrayList<Integer> PrintFromTopToBottom(TreeNode root) {
Queue<TreeNode> queue = new LinkedList<TreeNode>();
ArrayList<Integer> out = new ArrayList<Integer>();
if (root == null){
return out;
}
queue.add(root);
while(!queue.isEmpty()){
TreeNode topnode = new TreeNode(0);
topnode = queue.poll(); //获取并移除队列的头
out.add(topnode.val); //队列头对应的值放到ArrayList中
if(topnode.left != null){
queue.add(topnode.left);
}
if(topnode.right != null){
queue.add(topnode.right);
}
}
return out;
}
}