二叉查詢樹:
性質:對於樹中的每個結點x,它的左子樹中所有關鍵字值小於x的關鍵字值,而它的右子樹中所有關鍵字值大於x的關鍵字值。
定義:
//定義乙個searchtree
struct treenode
;//find操作
position find(elementtype x,searchtree t)
//查詢最大值操作
position findmax(searchtree t)
//查詢最小值操作(非遞迴)
position findmin(searchtree t)
//插入
searchtree insert(elementtype x,searchtree t)
//目前為止的功能是如果這個為葉子結點,則建立乙個新的元素存放x的值
}else if(xelement)
t->left=insert(x,t->left); //如果x小於結點的值,則向左邊插入。
else if (x>t->element)
t->right=insert(x,t->right); //如果x大於結點的值,則向右邊插入。
return t;}刪除
searchtree delete(elementtype x,searchtree t)
else
return t;
}
二叉排序樹(二叉查詢樹)的基本操作
二叉排序樹的查詢屬於動態查詢的範疇,根據查詢過程中是否對錶進行修改,可以把查詢分為靜態查詢和動態查詢。動態查詢表的特點是 表結構本身是在查詢過程中動態生成的,即對於給定的key值,若表中存在其關鍵字等於key的記錄,則查詢成功並返回,否則插入關鍵字等於key的記錄。二叉排序樹或者是一顆空樹,或者是具...
二叉查詢樹的刪除操作
對於二叉樹的刪除操作來說,存在三種情況 1.當刪除節點為葉節點的時候,此時將節點置為空 2.當刪除節點為根節點且該根節點只有乙個子樹的時候,此時需要替換掉刪除元素,最後再進行釋放 3.當刪除節點為根節點且根節點存在兩個子樹的時候,此時我們可以選擇替換左子樹的最大元素,或者右子樹的最小元素 c 如下 ...
二叉查詢樹的基本操作
二叉查詢樹 對於樹中的每個節點x,它的左子樹所有關鍵字小於x的關鍵字,而右子樹的所有關鍵字大於x的關鍵字。二叉查詢樹的平均深度是o logn 二叉查詢樹的刪除操作 如果有乙個兒子,調節父節點指標繞過該節點後被刪除。如果有兩個兒子,用右子樹的最小資料代替該節點的資料,並遞迴地刪除那個節點 現在它是空的...