思路:这道题目感觉有点难度。题目的意思是将每一层的节点都放到一个list中,最后返回一个list
public List<List<Integer>> levelOrder(TreeNode root) {
List<List<Integer>> answerList = new LinkedList<List<Integer>>();
// nodeList用来记录每一层的节点
List<Integer> nodeList = new ArrayList<Integer>();
//current用来记录遍历每一层节点时,用来表示当前的节点
LinkedList<TreeNode> current = new LinkedList<TreeNode>();
// next用来记录下一层的节点。
LinkedList<TreeNode> next = new LinkedList<TreeNode>();
if(root == null){
return answerList;
}
current.add(root);
while(!current.isEmpty()){
// remove()是把top节点拿出来并在队列中删除,并将下层节点放到next中
TreeNode tr = current.remove();
if(tr.left != null){
next.add(tr.left);
}
if(tr.right != null){
next.add(tr.right);
}
nodeList.add(tr.val);
// 当队列为空时,就把这一层的nodeList放到answerList中。
if(current.isEmpty()){
current = next;
next = new LinkedList<TreeNode>();
answerList.add(nodeList);
nodeList = new ArrayList<Integer>();
}
}
return answerList;
}