BST的前驅和後繼

2022-05-10 01:12:43 字數 929 閱讀 2753

bst  中序遍歷是 從小到大排序的

1.查詢後繼(找第乙個比他大的數)  

根據bst的 左小右大性質

1.若該節點有右孩子,則找  該右子數的最下值

2.如該節點無右孩子,    不斷尋找祖先p1  如果p1的父節點g1 且g1.letfchild =p1 則找到了第乙個比他大的數 若無則為空

//2.無右孩子 斜線的拐角 也就是是第乙個比當前節點大的節點

bstnodefnode =xnode.parent;

while (fnode!=null&&xnode==fnode.right)

//找到根 或者找到了 右斜線的拐角 也就是是第乙個比當前節點key大的節點

return fnode==null?null

:fnode.key;

}2.查詢前驅 (找乙個第乙個比他小的)

1.有左孩子   則在左子樹中找乙個最大值

2.無左孩子    不斷尋找祖先p1  如果p1的父節點g1 且g1.letfchild =p1 則找到了第乙個比他大的數 若無則為空

**:

//找乙個比它小的

@override

public k predecessor(k x)

bstnodefnode =xnode.parent;

// 做斜線找到第乙個左拐角

while (fnode!=null &&fnode.left==xnode)

return fnode==null?null:fnode.key;

}

前驅後繼(DS線性結構)

題目問題 a 前驅後繼 ds線性結構 時間限制 1 sec 記憶體限制 128 mb 提交 6 解決 5 提交 狀態 討論版 題目描述 在雙向鍊錶中,a有乙個指標指向了後繼節點b,同時,b又有乙個指向前驅節點a的指標。這樣不僅能從煉表頭節點的位置遍歷整個鍊錶所有節點,也能從鍊錶尾節點開始遍歷所有節點...

排序二叉樹BST的基本操作 2 前驅,後繼,刪除

前文中寫了基本操作中的插入,查詢,最大節點,最小節點。本文主要寫如何進行刪除。刪除的最重要的原則是,刪除後依然要維護bst的性質,也就是說,中序遍歷後為公升序。刪除的思路有三個。思路一 先理解前驅和後繼的含義。節點key的前驅,就是中序遍歷時,比key小的所有節點中最大的那個節點。節點key的後繼,...

二叉樹遍歷的前驅和後繼

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