二叉排序樹定義就是左子樹比根小,右子樹比根大;
中序遍歷出來的書遞增的有序序列;
先說它的查找:類似於二分查找,時間複雜度爲logN,這個很好理解吧,就是拿你要找的數從根比,大的話走右面,小的話走左面,每次減少一半;
再說它的插入:只要這個節點不是最底層的節點(就是這個節點下面沒有其他節點了),就跟它比較如果小於就往左走,如果大於就往有走,走到空時插入;
java實現:class tree{
int data;
tree lchild;
tree rchild;
}
public void insert(tree t,int data)
{
if(t == null)
{
tree t1 = new tree();
t1.data = data;
t = t1;
}
else if(t.data > data)
{
insert(t.lchild,data);
}
else if(t.data < data)
{
insert(rchild,data);
}
}
再說這個樹的創建:有了插入就很好創建了,就不寫了;
再說刪除:分爲幾種情況:
1.這種沒有子節點,直接刪除
2.這種有一個節點,或左或右,刪除之後直接補上就ok
3.這種是左右節點都有:有兩種方法(反正我就知道兩種。。。),但有一種會增加樹的高度,所以就不說了,用的也比較少,就說另一種,你要刪除那個節點,你就找那個節點下面的樹,找到它左子樹中最大的點或者右子樹中最小的點,把這個點替換成要刪除的點,就ok了,然後替換的點本身可能有子節點,再維護一下就好了