剑指 Offer 32 - II. 从上到下打印二叉树 II
题目:从上到下按层打印二叉树,同一层的节点按从左到右的顺序打印,每一层打印到一行。
解法:广度优先搜索
思路:使用队列,队列存放的是当前某一层的所有节点,所以出队时同时把节点加入到list中,那么这个list存放的将是某一层的所有节点
代码:
/**
- Definition for a binary tree node.
- public class TreeNode {
-
int val; -
TreeNode left; -
TreeNode right; -
TreeNode(int x) { val = x; } - }
*/
class Solution {
public List<List> levelOrder(TreeNode root) {
if(root==null){
return new ArrayList();
}
List<List> res = new ArrayList();
Queuequeue = new LinkedList(); //队列
queue.offer(root); //根结点入队
while(!queue.isEmpty()){
Listlist = new ArrayList();
for(int i=queue.size();i>0;i--){ //注意不能0到size-1,因为size会改变
TreeNode t = queue.poll();
list.add(t.val);
if(t.left!=null){
queue.offer(t.left);
}
if(t.right!=null){
queue.offer(t.right);
}
}
res.add(list);
}
return res;
}
}
注意:队列判空和list判空都不能使用xxx != null,而应使用isEmpty,isEmpty是判断内容是否为空

浙公网安备 33010602011771号