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

2021-10-23 18:21:49 字數 489 閱讀 4024

// 找尋節點的前驅節點

public node

predecessor

(node

node)

return p;

}// 2. 節點的左子樹不存在

while

(node.parent != null && node == node.parent.left)

return node.parent;

}//找尋節點的後繼節點

public node

sucessor

(node

node)

return s;

}//如果節點不存在右子樹,那麼就尋找父節點和祖父節點的左子樹

while

(node.parent != null && node == node.parent.right)

return node.parent;

}

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

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

找到二叉樹的後繼節點(或前驅節點)

找到二叉樹的前驅節點 在二叉樹的中序遍歷中,乙個節點的後繼結點就是他的下乙個節點 想要找到任意乙個節點的後繼結點,二叉樹的節點型別node需要包含父節點的資訊 節點 struct node include include 節點 struct node void insert tree node ro...

學習筆記 尋找二叉樹的前驅節點和後繼節點

二叉樹前驅節點和後繼節點 乙個二叉樹中序遍歷中某個節點的前乙個節點叫該節點的前驅節點,某個節點的後乙個節點叫後繼節點 該題目中還有乙個節點指向節點的父節點 parent,規定頭節點的父親節點的指標為空。struct treenode 思路 1 尋找前驅 若該節點存在左子樹,則其前驅節點為左子樹最右邊...