資料結構之二叉查詢樹

2021-08-19 15:02:46 字數 2144 閱讀 4627

二叉查詢樹(binary search tree),又被稱為二叉搜尋樹。設x為二叉查詢樹中的乙個結點,x節點包含關鍵字key,節點x的key值記為 ke

y[x]

k ey

[x]。

如果y是x的左子樹中的乙個結點,則 ke

y[y]

<=ke

y[x]

k ey

[y]<=ke

y[x]

; 如果y是x的右子樹的乙個結點,則 ke

說明:若任意節點的左子樹不空,則左子樹上所有結點的值均小於它的根結點的值;

任意節點的右子樹不空,則右子樹上所有結點的值均大於它的根結點的值;

任意節點的左、右子樹也分別為二叉查詢樹。

沒有鍵值相等的節點(no duplicate nodes)

1. 節點結構:

typedef

int type;

typedef

struct bstreenodenode, *bstree;

2. 建立節點
static node* create_bstree_node(type key, node *

parent, node *left, node* right)

3.插入

4. 查詢

node* iterative_bstree_search(bstree x, type key)

return x;

}

5. 最大值和最小值
node* bstree_maximum(bstree tree)

node* bstree_minimum(bstree tree)

6. 刪除

二叉查詢樹的刪除分為三種情況:

刪除節點為葉子節點:

直接刪除葉子節點

刪除節點只有左子樹或者只有右子樹:

刪除節點,並將左子樹或者右子樹接到刪除節點位置

刪除節點左子樹與右子樹都有

刪除節點,將左子樹接到刪除節點的位置,右子樹接到左子樹的最右子樹位置。

刪除節點,將右子樹接到刪除節點的位置,左子樹接到右子樹的最左子樹位置。

資料結構之二叉查詢樹

針對二叉查詢樹的操作 增刪改查 的時間和樹的高度成正比,比如都有10個節點的乙個樹,樹高為4和樹高為10的操作時間肯定是不同的,這個時間實際上是o lgn 二叉查詢樹的期望的樹高是lgn,從而基本動態集合的操作平均時間為 lgn 通常二叉查詢樹基於鍊錶實現,每個節點儲存左,右子節點,如果想更方便的實...

資料結構之二叉查詢樹

二叉樹成為二叉查詢樹的性質是,對於樹種的每個節點x,他的左子樹中的所有關鍵字的值均小於x的關鍵字的值,而他的右子樹中的所有關鍵字的值均大於x的關鍵字的值。這意味著,該樹的所有元素均可以是用某種統一的方式排序。tree.h pragma once we define the binary tree.s...

資料結構查詢演算法之二叉查詢樹

關於二叉查詢樹,介紹肯定是很多的,這裡我列舉的下面的 和思想,是按照二叉查詢樹,但是沒有使用二叉樹的資料結構,而是按照陣列索引建立邏輯上的二叉樹結構,並使用二叉樹的遞迴方式查詢給定的值,並在注釋中對不同的情況提出一點自己的看法,建立樹的過程參考堆排序的思想,並且在結構上大致相同,所以需要注意的地方也...