1. 程式人生 > >【算法導論】第12章,二叉搜索樹

【算法導論】第12章,二叉搜索樹

最小值 優先隊列 大於 時間 中序遍歷 復雜 默認 插入元素 它的

二叉搜索樹支持很多動態集合操作,可以當作字典,也可以當作優先隊列。

二叉搜索樹基本操作的時間代價與樹的高度成正比,log n 級別。隨機構造的二叉搜索樹的期望高度就是 log n。

每個節點包含信息:key,衛星數據,父, 左孩子,右孩子。

12.1 二叉搜索樹的定義:

左子樹小於節點,右子樹大於節點。

可以用中序遍歷遞歸輸出所有的key, 遍歷時間是O(n)

12.2 查詢二叉搜索樹

最常見的操作:查找特定key、

另外的操作:後繼、前驅、最大值、最小值、,均為o(h), h為二叉搜索樹的高度。

查找默認從根節點開始。

後繼指只比它大的元素,前驅指只比它小的元素。

12.3 插入與刪除

插入元素比較簡單,找到合適的位置就行了。

刪除元素比較困難,

  如果沒有子女,直接刪除就行了。

  如果只有一個子女,把子女和父親連在一起就行了。

  如果有兩個子女,先刪除它的後繼,

12.4 隨機構造的二叉查找樹

構造二叉查找樹的方法:一直插入元素,

期望高度為Logn.

期望復雜度為nlogn

【算法導論】第12章,二叉搜索樹