1. 程式人生 > >資料結構/查詢方法

資料結構/查詢方法

1 順序查詢

2 二分查詢需要資料有序

3 查詢樹

3.1 二叉查詢樹

3.1.1 定義和性質

所謂二叉查詢樹(binary search tree , BST)或者是一棵空樹;或者是具有以下性質的二叉樹:
⑴ 若它的左子樹不空,則其左子樹中所有結點的值不大於根結點的值;
⑵ 若它的右子樹不空,則其右子樹中所有結點的值不小於根結點的值;
⑶ 它的左、右子樹都是二叉查詢樹

總結:左小右大

3.1.2 二叉查詢樹中查詢(遞迴)

3.1.3 二叉查詢樹中查詢(非遞迴)

3.1.3 最小值(最左邊)

public Node min(BinTreeNode v){
     if (v!=null)
           while (v.hasLChild()) v = v.getLChild();

     return v;
}

3.1.4 最大值(最右邊)

public Node min(BinTreeNode v){
     if (v!=null)
           while (v.hasRChild()) v = v.getRChild();

     return v;
}

3.1.5 前驅

和後續的相反

3.1.6 後續
在二叉查詢樹中確定某個結點v 的後續結點的演算法思想如下:如果結點v 有右子樹,那麼v 的後續結點是v 的右子樹中關鍵字最小的

如果結點v 右子樹為空,並且v 的後續結點存在,那麼v 的後續結點是從v 到根的路徑上第一個作為左孩子的父節點。

3.2 AVL樹

二叉查詢樹高度直接影響到操作實現的效能,而在某些特殊的情況下二叉查詢樹會退化為一個單鏈表,如插入的結點序列本身就有序的情況下,此時各操作的效率會下降到Ο(n)。二叉查詢樹的高度越低越好,從樹的形態來看,也就是使樹儘可能平衡。

3.3 B-樹

4 雜湊