题目描述:
从上往下打印出二叉树的每个节点,同层节点从左至右打印。
思路解析:
二叉树的层序遍历,需要队列的辅助,因为是先进先出;出来一个就把他的左子节点和右子节点加入队列;可以使用poll();
注意:需要将二叉树的value添加进队列中。
代码:
import java.util.ArrayList;
import java.util.Queue;
import java.util.LinkedList;
public class Solution {
public ArrayList<Integer> PrintFromTopToBottom(TreeNode root) {
ArrayList<Integer> result = new ArrayList<Integer>();
if(root==null)
return result;
Queue<TreeNode> q = new LinkedList<TreeNode>();
q.add(root);
while(!q.isEmpty()){
TreeNode node = q.poll();//先get队列的第一个元素,然后从队列中删除
result.add(node.val);
if(node.left!=null)
q.add(node.left);
if(node.right!=null)
q.add(node.right);
}
return result;
}
}