演算法導論 12章 二叉搜尋樹

2021-07-02 06:17:36 字數 752 閱讀 1598

最壞執行時間

完全二叉樹  o_( lgn)

線性鏈      o_(n)  

隨機構造      o( lgn) 平均時間o_(lgn)二叉搜尋樹性質

左子樹小於雙親,右子樹大於雙親

二叉搜尋樹的基本操作所花費的時間與這棵樹的高度成正比。

遍歷中序遍歷o_(n)

子樹根在左右之間

偽**:

inorder-tree-walk(x)

if x!=nil

inorder-tree-walk(x.left)

inorder-tree-walk(x.right)

先序遍歷

子樹根在左右之前

後序遍歷

子樹根在左右之後

查詢給定關鍵字

最大關鍵字

最小關鍵字

前驅後驅

插入和刪除

插入刪除

4種情況:

1, z沒有左孩子,用右孩子替換z

2, z僅有左孩子,用左孩子替換z

3, 有兩個孩子,查詢後繼y,y在z的右子樹中,並沒有左孩子。

1)如果y為z的右孩子,用y替換z。

2)否則,先用y的右孩子替換y,再用y替換z

1,11,2

1.3

void btree::inorderf(tree *t)

if (!s.empty())

}}//中序遍歷 ,棧

演算法導論第12章 二叉搜尋樹

左子樹 根 右子樹 根據二叉樹的基本性質,向左子樹或右子樹遞迴即可 查詢結點x的後繼y分為兩種情況 右結點存在,即只需要找到右子樹中最小的元素就好了 右結點不存在,此時就要向親代查詢,直到找到右上方的親代,此時y是x的最底層祖先,且y的左孩子是x的乙個祖先。迭代演算法 類似於一根小棒在樹中移動,最終...

演算法導論 文章12章 二叉搜尋樹

二叉搜尋樹是樹的資料結構。這是乙個普通的二進位制最大的區別是二叉搜尋樹,以滿足物業 對於樹中的隨機的乙個節點。其左側的所有節點的子樹keyword值不超過該節點更大keyword值,節點的隨機右子樹keyword值不小於所述節點keyword值。在二叉查詢樹上能夠進行搜尋 取最小值 取最大值 取指定...

演算法導論筆記 12二叉搜尋樹

1 概念 二叉搜尋樹也叫二叉排序樹,它支援的操作有 search,minimum,maximum,predecessor,successor,insert,delete。所以,一顆二叉搜尋樹既可以作為乙個字典,又可以作為乙個優先佇列。二叉搜尋樹的基本操作時間與這棵樹的高度成正比。二叉搜尋樹的高度可以...