给我解释一下下面这段代码每句话的意思 import java.util.LinkedList; import java.util.Queue; public class TreeNode { int val; TreeNode left; TreeNode right; public TreeNode(int val) { this.val = val; } public static void bfs(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 + " "); if (node.left != null) { queue.offer(node.left); } if (node.right != null) { queue.offer(node.right); } } } public static void main(String[] args) { TreeNode root = new TreeNode(1); root.left = new TreeNode(2); root.right = new TreeNode(3); root.left.left = new TreeNode(4); root.left.right = new TreeNode(5); root.right.left = new TreeNode(6); root.right.right = new TreeNode(7); bfs(root); } }
时间: 2024-02-14 20:12:08 浏览: 144
java.util.TimeZone 的世界时区列表
4星 · 用户满意度95%
当然,下面是对代码每句话的解释:
```java
import java.util.LinkedList;
import java.util.Queue;
public class TreeNode {
int val;
TreeNode left;
TreeNode right;
public TreeNode(int val) {
this.val = val;
}
public static void bfs(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 + " ");
if (node.left != null) {
queue.offer(node.left);
}
if (node.right != null) {
queue.offer(node.right);
}
}
}
public static void main(String[] args) {
TreeNode root = new TreeNode(1);
root.left = new TreeNode(2);
root.right = new TreeNode(3);
root.left.left = new TreeNode(4);
root.left.right = new TreeNode(5);
root.right.left = new TreeNode(6);
root.right.right = new TreeNode(7);
bfs(root);
}
}
```
- `import java.util.LinkedList` :导入`LinkedList`类,该类实现了链表数据结构。
- `import java.util.Queue` :导入`Queue`接口,该接口表示队列数据结构。
- `public class TreeNode { ... }` :定义一个`TreeNode`类,表示二叉树的节点,包含属性`val`、`left`和`right`,分别表示节点的值、左子节点和右子节点。
- `public TreeNode(int val) { ... }` :`TreeNode`类的构造函数,初始化节点的值。
- `public static void bfs(TreeNode root) { ... }` :定义一个静态方法`bfs`,表示广度优先搜索遍历二叉树,入参为根节点`root`。
- `if (root == null) { return; }` :如果根节点`root`为空,则直接返回。
- `Queue<TreeNode> queue = new LinkedList<>();` :创建一个队列`queue`,类型为`TreeNode`,即节点类型,使用`LinkedList`类来实现队列。
- `queue.offer(root);` :将根节点`root`加入队列中。
- `while (!queue.isEmpty()) { ... }` :当队列不为空时,循环执行以下代码块。
- `TreeNode node = queue.poll();` :从队列中取出队头元素`node`,并将其从队列中删除。
- `System.out.print(node.val + " ");` :访问当前节点的值,并输出到控制台。
- `if (node.left != null) { queue.offer(node.left); }` :如果当前节点有左子节点,则将其加入队列中。
- `if (node.right != null) { queue.offer(node.right); }` :如果当前节点有右子节点,则将其加入队列中。
- `public static void main(String[] args) { ... }` :程序入口函数。
- `TreeNode root = new TreeNode(1);` :创建根节点`root`,并初始化节点的值为`1`。
- `root.left = new TreeNode(2);` :创建节点`2`,并将其作为根节点`root`的左子节点。
- `root.right = new TreeNode(3);` :创建节点`3`,并将其作为根节点`root`的右子节点。
- `root.left.left = new TreeNode(4);` :创建节点`4`,并将其作为节点`2`的左子节点。
- `root.left.right = new TreeNode(5);` :创建节点`5`,并将其作为节点`2`的右子节点。
- `root.right.left = new TreeNode(6);` :创建节点`6`,并将其作为节点`3`的左子节点。
- `root.right.right = new TreeNode(7);` :创建节点`7`,并将其作为节点`3`的右子节点。
- `bfs(root);` :调用`bfs`方法,广度优先搜索遍历二叉树。
阅读全文