// 二叉搜索树类 <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