层序遍历,广度优先
常规的程序遍历
public int[] levelOrder(TreeNode root) {
if (root == null) return new int[0];
ArrayList<Integer> result = new ArrayList<>();
/** 创建一个队列,用来存放下一层的元素*/
Queue<TreeNode> queue = new LinkedList<TreeNode>();
queue.add(root);
while ( !queue.isEmpty() ){
//将当前层数出队列
TreeNode node = queue.poll();
//放入结果中
result.add(node.val);
//将该节点的下一层元素放入队列中
if (node.left != null) queue.add(node.left);
if (node.right != null) queue.add(node.right);
}
/** 将list结果集转化为数组*/
int[] res = new int[result.size()];
for (int i = 0; i < result.size(); i++) {
res[i] = result.get(i);
}
return res;
}