思路:BFS
1、根節點加入隊列;
2、遍歷隊列中的節點,將節點的子節點加入隊列; (如不需要逐行,則結束)
3、如何實現逐行?需要記錄每行隊列的長度;
代碼:
public List<List<Integer>> levelOrder(TreeNode root) {
List<List<Integer>> reslist = new ArrayList<>();
Queue<TreeNode> queue = new LinkedList<>();
TreeNode node;
int size;
if(root == null)
return null;
queue.offer(root);
while(!queue.isEmpty()) {
List<Integer> tmplist = new ArrayList<>();
size = queue.size();
while(size != 0) {
node = queue.poll();
tmplist.add(node.val);
size--;
if(node.left != null)
queue.offer(node.left);
if(node.right != null)
queue.offer(node.right);
}
reslist.add(tmplist);
}
}