二叉搜索树(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,

浙公网安备 33010602011771号