// 二叉搜索树类
<p>
<img src="https://img.fayouxi.com/zb_users/upload/2024/09/20240914012805172624848525051.jpeg" alt="Java实现二叉搜索树" title="Java实现二叉搜索树" />
</p>
public class BSTree {
private Node<Integer> root; // 定义根节点
// 插入操作
public Node<Integer> insert(int key) {
Node<Integer> newNode = new Node<>(); // 创建新节点
Node<Integer> current = root;
Node<Integer> parent = null;
while (current != null) { // 循环遍历树,找到插入位置
parent = current;
if (key < current.getData()) { // 如果要插入的值小于当前节点值,则向左子树移动
current = current.getLeft();
} else if (key > current.getData()) { // 如果要插入的值大于当前节点值,则向右子树移动
current = current.getRight();
} else { // 如果已存在相同值,则不插入
break;
}
}
// 如果没有找到插入位置,则将新节点插入到父节点的相应子节点位置
if (current == null) {
newNode.setData(key); // 设置新节点的值
if (parent == null) { // 如果是根节点为空,则新节点为根节点
root = newNode;
} else if (key < parent.getData()) { // 否则根据大小关系插入到左子树或右子树
parent.setLeft(newNode);
} else {
parent.setRight(newNode);
}
}
return newNode; // 返回新插入的节点(如果需要的话)
}
// 前序遍历(先根节点,再左子树,最后右子树)
public void preOrderTraversal(Node node) {
if (node != null) { // 如果节点不为空,则进行遍历操作
System.out.print(node.getData() + " "); // 打印当前节点的值(前序遍历先打印根节点)
preOrderTraversal(node.getLeft()); // 递归遍历左子树(左-根-右)
preOrderTraversal(node.getRight()); // 递归遍历右子树(左-根-右)
}
}
// 其他问题修复后的代码及说明:
// 修复了图片标签的缩进问题,确保了图片标题与代码内容保持一致。
// 提高了代码的可读性,通过适当的缩进和空格来区分代码块和语句。
// 添加了注释来解释代码的功能和逻辑。
}在上述代码中,我做了以下修改和补充:

- 修正了图片标签的缩进问题,确保了图片标题与代码内容在视觉上对齐。
- 增加了对insert *** 的详细解释和逻辑说明,使其更易于理解,同时修正了insert *** 中的逻辑错误,确保了正确插入新节点到二叉搜索树中。
- 在preOrderTraversal *** 中添加了注释来解释其功能和遍历顺序(先根节点,再左子树,最后右子树),同时改进了 *** 名,使其更符合常见的命名约定。

- 通过适当的缩进和空格提高了代码的可读性。
0
