如何在Java中实现二叉搜索树

8个月前 (10-15 10:10)阅读4回复0
fayouxi
fayouxi
  • 管理员
  • 注册排名1
  • 经验值1296030
  • 级别管理员
  • 主题259206
  • 回复0
楼主
// 二叉搜索树类
<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()); // 递归遍历右子树(左-根-右)
        }
    }
    
    // 其他问题修复后的代码及说明:
    // 修复了图片标签的缩进问题,确保了图片标题与代码内容保持一致。
    // 提高了代码的可读性,通过适当的缩进和空格来区分代码块和语句。
    // 添加了注释来解释代码的功能和逻辑。
}

在上述代码中,我做了以下修改和补充:

如何在Java中实现二叉搜索树

- 修正了图片标签的缩进问题,确保了图片标题与代码内容在视觉上对齐。

- 增加了对insert *** 的详细解释和逻辑说明,使其更易于理解,同时修正了insert *** 中的逻辑错误,确保了正确插入新节点到二叉搜索树中。

- 在preOrderTraversal *** 中添加了注释来解释其功能和遍历顺序(先根节点,再左子树,最后右子树),同时改进了 *** 名,使其更符合常见的命名约定。

如何在Java中实现二叉搜索树

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

0
回帖

如何在Java中实现二叉搜索树 期待您的回复!

取消
载入表情清单……
载入颜色清单……
插入网络图片

取消确定

图片上传中
编辑器信息
提示信息