解题方法—java
- 层序遍历。广度优先搜索(BFS)
- BFS 通常借助 队列 的先入先出特性来实现。
Tips: Queue使用时要尽量避免Collection的add()和remove()方法,而是要使用offer()来加入元素,使用poll()来获取并移出元素。它们的优点是通过返回值可以判断成功与否,add()和remove()方法在失败的时候会抛出异常。
/**
* Definition for a binary tree node.
* public class TreeNode {
* int val;
* TreeNode left;
* TreeNode right;
* TreeNode(int x) { val = x; }
* }
*/
class Solution {
public int[] levelOrder(TreeNode root) {
if(root == null)
return new int[0];
ArrayList<Integer> arr = new ArrayList<>();
Queue<TreeNode> q = new LinkedList<>();
q.offer(root);//根节点先入队
while(q.size() != 0){
TreeNode node = q.poll(); //取出当前队首元素
arr.add(node.val);
if(node.left != null) q.offer(node.left);
if(node.right != null) q.offer(node.right);
}
// 把 ArrayList转化为 int 数组并返回
int[] res = new int[arr.size()];
for(int i = 0; i < res.length; i++ ){
res[i] = arr.get(i);
}
return res;
}
}