广度优先搜索(BFS)
public E poll() | 删除并返回第一个元素。 |
---|
size() | 返回 arraylist 里元素数量 |
class Solution {
public int[] levelOrder(TreeNode root) {
if(root==null) return new int[0];
Queue<TreeNode> nodes = new LinkedList<TreeNode>();
ArrayList<Integer> res = new ArrayList<>();
nodes.add(root);
while(!nodes.isEmpty()){
TreeNode node = nodes.poll();
res.add(node.val);
if(node.left!=null) nodes.add(node.left);
if(node.right!=null) nodes.add(node.right);
}
int[] result = new int[res.size()];
for(int i=0;i<res.size();i++){
result[i] = res.get(i);
}
return result;
}
}
class Solution {
public List<List<Integer>> levelOrder(TreeNode root) {
List<List<Integer>> res = new ArrayList<>();
Queue<TreeNode> nodes = new LinkedList<>();
if(root!=null) nodes.add(root);
while(!nodes.isEmpty()){
List<Integer> tmp = new ArrayList<>();
for(int i=nodes.size();i>0;i--){
TreeNode node = nodes.poll();
tmp.add(node.val);
if(node.left!=null) nodes.add(node.left);
if(node.right!=null) nodes.add(node.right);
}
res.add(tmp);
}
return res;
}
}
public void addFirst(E e) | 元素添加到头部。 |
---|
public void addLast(E e) | 元素添加到尾部。 |
class Solution {
public List<List<Integer>> levelOrder(TreeNode root) {
List<List<Integer>> res = new ArrayList<>();
Deque<TreeNode> nodes = new LinkedList<>();
if(root!=null) nodes.add(root);
while(!nodes.isEmpty()){
LinkedList<Integer> tmp = new LinkedList<>();
for(int i=nodes.size();i>0;i--){
TreeNode node = nodes.poll();
if(res.size() % 2 == 0) tmp.addLast(node.val);
else tmp.addFirst(node.val);
if(node.left != null) nodes.add(node.left);
if(node.right != null) nodes.add(node.right);
}
res.add(tmp);
}
return res;
}
}