/**
* 二分搜索树
*/
public class BSTree<E extends Comparable<E>> {
private Node root;
private int size;
class Node {
public E e;
Node left,right;
public Node(E e){
this.e = e;
left = null;
right = null;
}
}
/**
* size()
* @return
*/
public int size(){
return size;
}
/**
* 是否为空
* @return
*/
public boolean isNull(){
return size == 0;
}
/**
* 添加元素
* @param e
*/
public void add(E e){
root = add(root,e);
}
private Node add(Node node,E e){
if(node == null){
size++;
return new Node(e);
}
if(e.compareTo(node.e) > 0){
node.right = add(node.right,e);
}
else if (e.compareTo(node.e) < 0){
node.left = add(node.left,e);
}
return node;
}
/**
* 查询元素
* @param e
* @return
*/
public boolean contain (E e){
return contain(root, e);
}
private boolean contain (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 contain(node.right,e);
else
return contain(node.left,e);
}
/**
* 遍历元素(前序遍历)
*/
public void preOrder (){
preOrder(root);
}
private void preOrder(Node node){
if(node == null)
return;
System.out.println(node.e);
preOrder(node.left);
preOrder(node.right);
}
}
算法基础之--二分搜索树(添加,删除,深度优先遍历,广度优先遍历)
最新推荐文章于 2024-08-01 09:37:35 发布