二叉查找树与链表不同,二叉查找树可以查看左右两侧的节点。
建立一个根节点,要添加的节点与根节点比较,大的作为左孩子,小的作为右孩子。二叉树每个节点最多有两个孩子节点。二叉树每个节点最多有一个父亲节点。
创建Node节点
private class Node
{
public E e;
public Node left;
public Node right;public Node(E e)
{
this.e = e;
left = null;
right = null;
}
}
private Node root;//创建Node 对象root来表示根节点
private int N;//记录节点个数
BST初始化
public BST1()
{
root = null;
N = 0;
}
添加节点add()(非递归)
添加节点需要建立两个Node对象,cur:指向null空节点。pre:null空节点的父节点。
相当于对一个链表进行添加。
//往二叉查找树中添加元素,非递归实现
public void add(E e)
{
if (root == null) //如果root为null则说明这是一个空树,因此直接把e待入到根节点
{
root = new Node(e);
N++;
return;
}Node pre = null;
Node cur = root;while (cur != null)
{
if (e.CompareTo(cur.e) == 0)//如果很节点值与带入值相等则直接返回
return;pre = cur; //pre指向根节点(cur的父节点,因为cur会指向cur子节点)
if (e.CompareTo(cur.e) < 0) //插入值小于父节点值,cur指向左节点(左孩子)
cur = cur.left;
else //e.CompareTo(cu