資料結構 二叉搜尋樹 前驅和後繼的經驗總結

2021-07-31 18:17:37 字數 857 閱讀 5136

假設x為當前節點y為x的後繼結點

總結為四種情況

哎另一種情況不會說哎,如圖(c) 圖(d)

tree-successor(x)

if x.right ≠ nil

return tree-minimum(x.right)//圖(a) 圖(b)的情況

y = x.p

while y ≠ nil and x == y.right

//圖(c) 圖(d) 和 沒有後繼節點的情況

x = y

y = y.p

return y

假設x為當前節點y為x的前驅結點

上圖的四種情況正好與尋找後繼結點的情況相反,這裡就不再贅述了

tree-predecessor(x)

if x.right ≠ nil

return tree-maximum(x.left) //圖(a) 圖(b)的情況

y = x.p

while y ≠ nil and x == y.left //圖(c) 圖(d) 和 沒有後繼節點的情況

x = y

y = y.p

return y

演算法導論二叉搜尋樹

找尋二叉搜尋樹的前驅和後繼節點

找尋節點的前驅節點 public node predecessor node node return p 2.節點的左子樹不存在 while node.parent null node node.parent.left return node.parent 找尋節點的後繼節點 public node...

二叉搜尋樹的前驅和後繼詳細推導

後繼和前驅 定義 乙個結點的後繼,是大於x.key的最小關鍵字的結點。乙個結點的前驅,是小於x.key的最大關鍵字的結點。思路 找乙個結點的前驅或者後繼,無非是在三個區域找。首先分析前驅 滿足兩個條件,一是要小於當前鍵值,那麼只有lp和ls區可以找。二要求是其中最大的值。我們知道,對於lp來說,x ...

二叉樹遍歷的前驅和後繼

下面關於二叉樹三種遍歷方法的前驅和後繼作討論和總結。一 前序遍歷1.1 找後繼 若有左子女,則後繼是左子女 若無左子女,有右子女,則後繼是右子女 若既無左子女,又無右子女,則是一片葉子 若是其父母的左子女,且父母有右子女,則後繼是父母的右子女。若是其父母的左子女,且父母無右子女 若是其父母的右子女。...