温馨提示:这篇文章已超过241天没有更新,请注意相关的内容是否还可用!
多叉树是一种特殊的树结构,每个节点可以有多个子节点。在多叉树中,广度优先遍历是一种遍历方式,它按层次遍历树的节点,先访问根节点,然后依次访问根节点的所有子节点,再访问子节点的子节点,以此类推。
下面是一个多叉树的Java代码示例,展示了如何使用广度优先遍历方法遍历多叉树:
import java.util.LinkedList;
import java.util.Queue;
class TreeNode {
int val;
List<TreeNode> children;
public TreeNode(int val) {
this.val = val;
this.children = new ArrayList<>();
}
}
public class MultiwayTreeBFS {
public void breadthFirstSearch(TreeNode root) {
if (root == null) {
return;
}
Queue<TreeNode> queue = new LinkedList<>();
queue.offer(root);
while (!queue.isEmpty()) {
TreeNode node = queue.poll();
System.out.print(node.val + " ");
for (TreeNode child : node.children) {
queue.offer(child);
}
}
}
public static void main(String[] args) {
// 构建一个多叉树
TreeNode root = new TreeNode(1);
TreeNode node2 = new TreeNode(2);
TreeNode node3 = new TreeNode(3);
TreeNode node4 = new TreeNode(4);
TreeNode node5 = new TreeNode(5);
TreeNode node6 = new TreeNode(6);
root.children.add(node2);
root.children.add(node3);
node2.children.add(node4);
node2.children.add(node5);
node3.children.add(node6);
// 广度优先遍历多叉树
MultiwayTreeBFS solution = new MultiwayTreeBFS();
solution.breadthFirstSearch(root);
}
}
在上面的示例代码中,我们首先定义了一个`TreeNode`类,表示多叉树的节点。每个节点包含一个整数值`val`和一个子节点列表`children`。然后,我们定义了`MultiwayTreeBFS`类,其中包含一个`breadthFirstSearch`方法用于实现多叉树的广度优先遍历。
在`breadthFirstSearch`方法中,我们使用一个队列来辅助遍历。我们首先将根节点入队,然后开始循环,直到队列为空。在循环中,我们首先取出队列的头部节点,并输出该节点的值。然后,我们遍历该节点的所有子节点,并将它们依次入队。这样,我们就可以按层次遍历多叉树的所有节点。
在示例代码的`main`方法中,我们构建了一个多叉树,并调用`breadthFirstSearch`方法进行广度优先遍历。最终,输出的结果为`1 2 3 4 5 6`,表示按层次遍历多叉树的结果。