欢迎访问宙启技术站
智能推送

二叉搜索树的查找和插入Java函数实现

发布时间:2023-06-20 15:23:11

二叉搜索树是一种特殊的二叉树,它的每个节点都存储了一个数值,并且左子树上的所有节点的值都小于它的根节点值,右子树上的所有节点的值都大于它的根节点值。因此,二叉搜索树可以实现快速的查找和插入操作。下面介绍如何在Java中实现二叉搜索树的查找和插入操作。

定义二叉搜索树的Node类

首先,我们需要定义一个Node类来表示二叉搜索树中的一个节点。该类包含一个数据域和两个指向左右子节点的指针,如下所示:

class Node {
    int val;
    Node left;
    Node right;
    public Node(int val) {
        this.val = val;
        left = null;
        right = null;
    }
}

查找操作

二叉搜索树的查找操作可以通过递归实现。如果要查找的值等于当前节点的值,则返回当前节点;如果要查找的值小于当前节点的值,则在左子树中继续查找;如果要查找的值大于当前节点的值,则在右子树中继续查找。如果没有找到对应的节点,则返回null。

public Node search(Node root, int val) {
    if (root == null || root.val == val) {
        return root;
    }
    if (val < root.val) {
        return search(root.left, val);
    }
    return search(root.right, val);
}

插入操作

二叉搜索树的插入操作同样可以通过递归实现。如果要插入的值小于当前节点的值,则在左子树中继续插入;如果要插入的值大于当前节点的值,则在右子树中继续插入。如果插入的位置为空,则创建一个新节点,并将其插入到该位置。

public Node insert(Node root, int val) {
    if (root == null) {
        return new Node(val);
    }
    if (val < root.val) {
        root.left = insert(root.left, val);
    } else if (val > root.val) {
        root.right = insert(root.right, val);
    }
    return root;
}

综上所述,二叉搜索树的查找和插入操作可以通过递归实现。在递归过程中,我们需要不断比较要查找或插入的值和当前节点的值,并根据其大小关系选择左子树或右子树继续查找或插入。当遇到空节点时,我们需要创建一个新节点并将其插入到该位置。