二叉树的层次遍历 Java
时间: 2023-05-26 09:05:39 浏览: 125
以下是Java中二叉树的层次遍历代码示例:
```java
public List<List<Integer>> levelOrder(TreeNode root) {
List<List<Integer>> result = new ArrayList<>();
if (root == null) {
return result;
}
Queue<TreeNode> queue = new LinkedList<>();
queue.offer(root);
while (!queue.isEmpty()) {
int size = queue.size();
List<Integer> list = new ArrayList<>();
for (int i = 0; i < size; i++) {
TreeNode node = queue.poll();
list.add(node.val);
if (node.left != null) {
queue.offer(node.left);
}
if (node.right != null) {
queue.offer(node.right);
}
}
result.add(list);
}
return result;
}
```
其中,`TreeNode`是二叉树节点类,包含`val`和左右子节点`left`和`right`。函数`levelOrder`接收一个根节点,并返回一个列表,其中每个元素代表二叉树每一层的值。该算法使用广度优先搜索(BFS)实现,通过一个队列存储每一层的节点,每次遍历完一层后将该层的值存入`result`列表。
阅读全文