写一个广度搜索的算法
计算二叉树的层序遍历
层序遍历广度优先要借助队列这种数据结构才能实现,队列数据两部分一个存node节点另一个存在第几层。
当访问节点的层数等于返回的集合长度的时候,说明返回的集合中还没对应层数的集合,因为索引要小于集合的长度。[[]] ,索引为0此时集合的长度为1。
当把数据存入集合的时候,要把左右孩子的节点也要入队了。
import java.util.ArrayList;
import java.util.List;
import java.util.LinkedList;
import javafx.util.Pair;
class Solution {
// Definition for a binary tree node.
public class TreeNode {
int val;
TreeNode left;
TreeNode right;
TreeNode(int x) { val = x; }
}
public List<List<Integer>> levelOrder(TreeNode root) {
ArrayList<List<Integer>> res = new ArrayList<List<Integer>>();
if(root == null)
return res;
// 我们使用LinkedList来做为我们的先入先出的队列