二叉排序樹
定義
二叉排序樹或是一棵空樹,或是具有如下性質的二叉樹
l 左子樹若非空,則左子樹所有結點的關鍵字必然小於根節點關鍵字
l 右子樹若非空,則右子樹所有結點的關鍵字必然大於根節點關鍵字
l 左子樹和右子樹均為二叉排序樹
示例
二叉排序樹的查找
l 若二叉排序樹為空,則查找失敗
l 比較結點關鍵字的值與給定值,若給定值更大,則查找結點的右子樹
l 比較結點關鍵字的值與給定值,若給定值更小,則查找結點的左子樹
二叉排序樹的刪除
這里指刪除二叉排序樹的某一個結點
l 若結點為葉節點,則直接刪除
l 若結點的度為1,也即只有一棵子樹,則用其左孩子或右孩子代替(關鍵字交換),再刪除這個孩子
l 若結點有兩個孩子,則用中序的直接前驅或直接后繼將其代替(關鍵字交換),再刪除這個這個直接前驅(左孩子的最右結點)或直接后繼(右孩子的最左結點)
二叉排序樹的插入
這里是指將將一個新節點插入到二叉排序樹中
l 若二叉排序樹為空,則直接將新節點插入
l 若新節點關鍵字大於當前節點的關鍵字,則插入右子樹
l 若新節點關鍵字小於當前節點的關鍵字,則插入左子樹
題目整理
001、在二叉排序樹中,新插入的關鍵字總是處於最底層(王道模擬四-T07-Ⅲ)嗎?
002、含有4個元素值均不相同的二叉排序樹有_____種。答:14
003、含16個結點的平衡二叉樹最大深度是___。(斐波那契:a1=1, a2=2, an=an-1+an-2+1)
答案整理
001、答:不是的,依據二叉排序樹的插入規則,只有當二叉排序樹為空時,新的結點才能直接插入,否則總是會通過比較轉而向其某一子樹插入,若從查找的角度考慮,在二叉排序樹中查找新節點鍵值,則最后查找失敗的結點即為最終新節點的位置(此時將空指針視為空結點),於是新插入的結點總是作為新二叉排序樹的葉子節點,而“最底層“,反映的是二叉樹中有關”層“的概念,一般根節點為第一層,第n結點的孩子均處於第n+1層。由此可見,葉節點不一定在最底層,因此新插入的關鍵字並不總是在最底層。