1.思路
- 首先要定义好
数据结构,该问题的数据结构是[[],[],[],...]
- 然后是用
队列来存储每一层的指针
队列不空,就循环地将每一层的数据一个一个地存入中间缓存的数组,并将树节点不空的左孩子和右孩子存入队列中。
- 队列为空,表示遍历完
所有的数据。
2.代码
import java.util.*;
public class TreeNode {
int val = 0;
TreeNode left = null;
TreeNode right = null;
}
public class Solution {
public ArrayList<ArrayList<Integer>> levelOrder (TreeNode root) {
ArrayList<ArrayList<Integer>> result = new ArrayList<ArrayList<Integer>>();
if(root==null){
return result;
}
Queue<TreeNode> queue = new LinkedList<TreeNode>();
queue.add(root);
while(!queue.isEmpty()){
ArrayList<Integer> res = new ArrayList<Integer>();
int n = queue.size();
for(int i = 0;i<n;i++){
TreeNode node = queue.poll();
if(node!=null){
res.add(node.val);
}
if(node.left!=null){
queue.add(node.left);
}
if(node.right!=null){
queue.add(node.right);
}
}
result.add(res);
}
return result;
}
}