用java语言层次遍历N叉树结构
时间: 2023-07-18 17:31:23 浏览: 40
层次遍历N叉树结构与二叉树类似,只需要将节点的子节点从左到右加入队列即可。以下是一个Java实现层次遍历N叉树的示例代码:
```java
import java.util.ArrayList;
import java.util.LinkedList;
import java.util.List;
import java.util.Queue;
class Node {
int val;
List<Node> children;
Node(int val) {
this.val = val;
this.children = new ArrayList<>();
}
}
public class NTree {
public void levelOrder(Node root) {
if (root == null) return;
Queue<Node> queue = new LinkedList<>();
queue.offer(root); // 将根节点加入队列
while (!queue.isEmpty()) {
int levelSize = queue.size(); // 获取当前层的节点数
for (int i = 0; i < levelSize; i++) {
Node node = queue.poll(); // 出队列
System.out.print(node.val + " "); // 访问节点
for (Node child : node.children) {
if (child != null) queue.offer(child); // 将子节点加入队列
}
}
System.out.println(); // 输出换行符,表示已访问完当前层
}
}
}
```
在上面的示例代码中,我们使用了一个队列来实现层次遍历。首先将根节点加入队列,然后在循环中依次访问队列中的每个节点,并将其子节点加入队列。由于队列是一种先进先出的数据结构,因此每次出队列的节点都是该层最左边的节点,可以保证遍历的顺序是从上到下、从左到右。
下面是一个使用示例:
```java
public class Main {
public static void main(String[] args) {
Node root = new Node(1);
Node node2 = new Node(2);
Node node3 = new Node(3);
Node node4 = new Node(4);
Node node5 = new Node(5);
Node node6 = new Node(6);
root.children.add(node2);
root.children.add(node3);
root.children.add(node4);
node3.children.add(node5);
node3.children.add(node6);
NTree tree = new NTree();
tree.levelOrder(root);
}
}
```
输出结果为:
```
1
2 3 4
5 6
```
其中每一行表示一层的节点。第一行只有一个节点,即根节点1;第二行有三个节点,分别为2、3、4;第三行有两个节点,分别为5、6。