Loading

二叉搜索树(BST)的java实现

一.什么是二叉搜索树?

简单来说,它是一个加了限定条件的二叉树。
它可以使最坏情况下的平均搜索的时间复杂度降低到O(log n).
条件是:
1.一个节点的左子树只能包含键值小于该节点的键值的节点。
2.一个节点的右子树只能包含键值大于该节点的键值的节点。
3.左右子树也都必须是二叉搜索树。

例如:
在这里插入图片描述

二.java代码的实现

1.节点的定义:

class BinarySearchTreeNode{
   
    private int data;
    private BinarySearchTreeNode left;
    private BinarySearchTreeNode right;
    public int getData()
    {
   
        return data;
    }

    public void setData(int data)
    {
   
        this.data=data;
    }

    public BinarySearchTreeNode getLeft()
    {
   
        return left;
    }
    public void setLeft(BinarySearchTreeNode left)
    {
   
        this.left=left;
    }

    public BinarySearchTreeNode getRight()
    {
   
        return right;
    }
    public void setRight(BinarySearchTreeNode right)
    {
   
        this.right=right;
    }
}

二.操作方法的定义:
1.查找元素:时间复杂度为O(n),空间复杂度为O(1)
2.查找最小,最大元素:时间复杂度为O(n),空间复杂度为O(1)
3.插入元素:时间复杂度为O(n),空间复杂度为O(n)。可用迭代改进
4.删除元素:时间复杂度为O(n),空间复杂度为O(n)。可用迭代改进

class CaoZuo1{
   
    
    /*寻找元素
    参数:root:根节点  data:要寻找的节点数据
    次方法通过比较往下遍历直到找到目标节点的思想,
    返回目标节点
    */
    BinarySearchTreeNode Find(BinarySearchTreeNode root,
posted @ 2020-03-24 11:30  文牧之  阅读(20)  评论(0)    收藏  举报  来源