public class BST<E extends Comparable<E>> { //Comparable接口,方便元素进行比较
private Node root; //根节点
private int size; //元素数量
private class Node {
public E e;
public Node left, right; //左节点,右节点
public Node(E e) { //构造方法,将左右节点赋值Null
this.e = e;
left = null;
right = null;
}
}
public BST() {
root = null;
size = 0;
}
public int size() {
return size;
}
public boolean isEmpty() {
return size == 0;
}
public void add(E e) {
root = add(root, e);
}
//向以node为根的二分搜索树插入元素e,递归算法
//返回插入新节点后的树根
private Node add(Node node, E e) {
if (node == null) {
size++;
return new Node(e);
}
if (e.compareTo(node.e) < 0) {
node.left = add(node.left, e);
} else if (e.compareTo(node.e) > 0) {
node.right = add(node.right, e);
}
return node;
}
public boolean contains(E e) {
return contains(root, e);
}
//通过递归算法实现搜索
private boolean contains(Node node, E e) {
if (node == null) {
return false;
}
if (e.compareTo(node.e) == 0) {
return true;
} else if (e.compareTo(node.e) < 0) {
return contains(node.left, e);
} else {
return contains(node.right, e);
}
}
}
二叉搜索树学习(2)--通过递归实现contains方法
最新推荐文章于 2025-07-06 15:14:49 发布
本文详细介绍了一种二分搜索树(BST)的Java实现方式,包括节点结构定义、树的初始化、元素的添加及查找等核心操作。通过对BST的递归算法解析,读者可以深入理解其工作原理。
1131

被折叠的 条评论
为什么被折叠?



