java bfs创建二叉树
时间: 2023-12-13 20:23:08 浏览: 78
要使用广度优先搜索(BFS)算法创建二叉树,你可以按层级顺序遍历给定的节点数据,并为每个数据创建一个二叉树节点。
下面是一个使用Java语言实现BFS创建二叉树的示例代码:
```java
import java.util.*;
class TreeNode {
int val;
TreeNode left;
TreeNode right;
TreeNode(int val) {
this.val = val;
}
}
public class BinaryTree {
public static void main(String[] args) {
int[] data = {1, 2, 3, 4, 5, 6, 7};
TreeNode root = createBinaryTree(data);
System.out.println("BFS traversal:");
bfsTraversal(root);
}
public static TreeNode createBinaryTree(int[] data) {
if (data == null || data.length == 0) {
return null;
}
TreeNode root = new TreeNode(data[0]);
Queue<TreeNode> queue = new LinkedList<>();
queue.offer(root);
int i = 1;
while (!queue.isEmpty() && i < data.length) {
TreeNode currNode = queue.poll();
// 创建左子节点
if (i < data.length) {
currNode.left = new TreeNode(data[i]);
queue.offer(currNode.left);
i++;
}
// 创建右子节点
if (i < data.length) {
currNode.right = new TreeNode(data[i]);
queue.offer(currNode.right);
i++;
}
}
return root;
}
public static void bfsTraversal(TreeNode root) {
if (root == null) {
return;
}
Queue<TreeNode> queue = new LinkedList<>();
queue.offer(root);
while (!queue.isEmpty()) {
TreeNode currNode = queue.poll();
System.out.print(currNode.val + " ");
if (currNode.left != null) {
queue.offer(currNode.left);
}
if (currNode.right != null) {
queue.offer(currNode.right);
}
}
}
}
```
在上面的示例代码中,我们首先定义了一个`TreeNode`类来表示二叉树节点。然后,在`createBinaryTree`方法中,我们使用一个队列(`Queue`)来辅助BFS算法的实现。我们按层级顺序遍历给定的节点数据,并为每个数据创建一个二叉树节点,并将其加入到队列中。在`bfsTraversal`方法中,我们使用另一个队列来进行广度优先遍历,输出每个节点的值。
以上就是使用BFS算法创建二叉树的Java示例代码。希望能对你有所帮助!如果还有其他问题,请随时提问。
阅读全文