剑指offer:从上往下打印二叉树
题目描述
从上往下打印出二叉树的每个节点,同层节点从左至右打印。
解题思路
广度优先遍历,LinkedList自带API,可以当作队列使用,入队列,依次添加root、root.left、root.right,并依次出队列,将val添加到list中。
public ArrayList<Integer> PrintFromTopToBottom(TreeNode root) {
ArrayList<Integer> list = new ArrayList<>();
LinkedList<TreeNode> queue = new LinkedList<>(); //利用LinkedList替代queue
if(root == null){ //root为空
return list;
}
queue.offer(root); //将root添加入队列
while(!queue.isEmpty()){
TreeNode node = queue.poll(); //出队列
list.add(node.val); //将val添加入list
if(node.left != null){ //处理左子节点
queue.offer(node.left);
}
if(node.right != null){ //处理右子节点
queue.offer(node.right);
}
}
return list; //返回
}

浙公网安备 33010602011771号