二叉树的层次遍历java
时间: 2023-05-27 21:01:24 浏览: 92
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 levelSize = queue.size();
List<Integer> levelList = new ArrayList<>();
for (int i = 0; i < levelSize; i++) {
TreeNode node = queue.poll();
levelList.add(node.val);
if (node.left != null) {
queue.offer(node.left);
}
if (node.right != null) {
queue.offer(node.right);
}
}
result.add(levelList);
}
return result;
}
```
这里用了一个计数器 levelSize 来标识每一层有多少个节点,在内层循环中遍历并取出这些节点。注意,在取出每个节点的同时,要把它的左右子节点入队。由于队列中的节点是按照从左到右的顺序,所以层次遍历的结果也符合从上到下、从左到右的规律。
阅读全文