二叉查詢樹

2021-08-22 02:47:54 字數 1720 閱讀 7295

二叉查詢樹

也稱為有序二叉樹,或者已排序二叉樹,是指一根空樹或者具有下列性質的二叉樹:

因為一顆由n個結點隨機構造的二叉查詢樹的高度為lgn,所以順理成章,二叉查詢樹的一般操作的執行時間為o(lgn)。但二叉查詢樹若退化成了一顆具有n個結點的線性鏈後,則這些操作的最壞執行時間為o(n)。

1.查詢的遞迴演算法

package

cn.chen.tree;

public class

bst <

keyextends

comparable<

key> ,

value

> }

public int

size()

private int

size(node x)

public

value

get(

keykey)

private

value

get(node x,

keyk)

private

value

get2(node x,

keyk)

return null

; }

public void

put(

keykey,

value

val)

private

node put(node x,

keykey,

value

val)

public

keymin()

private

node min(node x) }

2.刪除

在刪除結點x後用它的後繼結點填補它的位置。因為x有乙個右子節點,因此它的後繼結點就是其右子樹中的最小結點。這樣替換仍舊可以保持樹的有序性。

將指向即將被刪除的結點的鏈結儲存為t;

將x指向它的後繼結點min(t.right);

將x的右鏈結指向deletemin(t.right);

將x的左鏈結設為t.left。

public void

deletemin()

private

node deletemin(node x)

public void

delete(

keykey)

private

node delete(node x,

keykey)

x.n

= size(x.

left

) + size(x.

right

) +1;

return

x; }

二叉樹 二叉查詢樹

構建二叉樹,判斷是否為二叉查詢樹,遞迴先序遍歷,非遞迴中序遍歷 include include include include using namespace std 二叉樹結點 struct treenode 鍊錶結點 struct listnode struct tempnodetempnode...

二叉樹 二叉查詢樹

二叉樹 binary tree 一種樹型結構,每個節點最多擁有兩個節點。如下圖 幾種型別的二叉樹 1.full binary tree 每個節點的孩子數 是 0 或者 2.對高度沒有要求。如下圖 2.perfect binary tree 這個就是最完美的樹,顧名思義,所有葉子節點都有相同的深度,並...

樹(樹,二叉樹,二叉查詢樹)

1.定義 n n 0 個結點構成的有限集合。當n 0時,稱為空樹 2.對於任一棵非空樹 n 0 它具備以下性質 1 樹中有乙個稱為 根 root 的特殊結點,用 r 表示 2 其餘結點可分為m m 0 個互不相交的有限集t1,t2,其中每個集合本身又是一棵樹,稱為原來樹的子樹。3.樹的一些性質 1 ...