查詢二叉樹(BST)
阿新 • • 發佈:2019-02-01
1、查詢二叉樹的定義
先上圖:
一棵二叉搜尋樹(Binary Sort Tree)是以一棵二叉樹來組織的,可以用連結串列資料結構來表示,其中,每一個結點就是一個物件,一般地,包含資料值和指向孩子(也可能是父母)的指標
。如果某個孩子結點不存在,其指標為空(NULL
)。
- 查詢樹的左右子樹各是一棵查詢樹
- 若查詢樹的左子樹非空,則其左子樹上的各節點值均小於根節點的值。
- 若查詢樹的右子樹非空,則其右子樹上的各節點值均大於根節點的值。
2、查詢樹的基本操作
- 查詢
- 插入節點
- 刪除節點
2.1 查詢
二叉搜尋樹很多時候用來進行資料查詢。這個過程從樹的根結點開始,沿著一條簡單路徑一直向下,直到找到資料或者無法找到返回NULL
例如說,查詢12。
步驟:
- 12<16,向左找,與9去比較
- 12>9,向右找,與12去比較
- 12=12,找到了
2.2 插入
在查詢樹中插入一個節點需要分情況:
- 如果相同鍵值的節點已經存在,則不再插入
- 如果查詢樹為空,則已新節點為查詢樹
- 將要插入節點的鍵值與插入後的父節點的鍵值比較,就能確定新節點是父節點的左子節點,還是右子節點。
2.3 刪除
在查詢樹中刪除一個節點需要分情況:
- 若待刪除的節點是葉子節點,則直接刪除該節點
- 若待刪除的節點只有一個子節點,則將待刪除節點父節點與其子節點直接相連,然後刪除該節點
- 若待刪除的節點有兩個子節點,則在其左子樹上,用中序遍歷尋找值最大節點s,用節點s的值代替該節點的值,然後刪除節點s,且節點s必屬上述兩種情況之一
例題1:
利用逐點插入法建立序列(50,72,43,85,75,20,35,45,65,30)對應的二叉排序樹以後,查詢元素30要進行__次元素間的比較
A. 4
B. 5
C. 6
D. 7
插入是指把每個節點都看成查詢樹,因此可以畫出:
例題2:
在常用的描述二叉排序樹的儲存結構中,關鍵字值最大的節點__。
A. 左指標一定為空
B. 右指標一定為空
C. 左、右指標均為空
D. 左右指標均不為空