最壞執行時間
完全二叉樹 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。所以,一顆二叉搜尋樹既可以作為乙個字典,又可以作為乙個優先佇列。二叉搜尋樹的基本操作時間與這棵樹的高度成正比。二叉搜尋樹的高度可以...