平衡二叉樹的左旋右旋詳解 看不懂你打我

2021-10-09 16:44:18 字數 688 閱讀 1650

1.左旋:對x節點左旋,即以x的右孩子y為軸將x節點轉下來,變為y的左孩子,

簡單記為左旋即把該節點變為左孩子

例題1.如對a左旋

注意2個問題:

1.既然要左旋要以右孩子為軸,那麼右孩子是必須存在的,即不能為空。

2.左旋後b的左指標指向a,那原來b的左孩子c怎麼辦,誰去指向它?

a原來的右指標指向b,在左旋後該怎麼辦,它指向誰?

所以我們將左旋後a的右指標指向b原來的左孩子c即可。

習題:請畫出對b左旋後的結果。

2.右旋:對x節點右旋,即以x的左孩子y為軸將x節點轉下來,變為y的右孩子,

簡單記為右旋即把該節點變為右孩子

在詳細講解完左旋後,請對例題1的b右旋,並思考在右旋前a的右指標是指向b的,右旋後應該是指向誰呢?(耐心點,慢慢來比較快)

為了減小樹的高度

可以,以左旋為例,左旋時b、d沒有變,只要考慮a、c,我們把a變為b的左節點,滿足a

二叉樹左旋右旋

額,今天先更左旋右旋,當然加強版的線段樹正在來的路上。左旋右旋,就是說可以用來平衡二叉樹,加強二叉樹的效率。如果閱讀上有些困難,建議畫乙個圖來看。include include usingnamespace std int n structnode pool 100100 root void ins...

平衡二叉搜尋樹 左旋 右旋

上一節 紅黑樹前奏 對樹的基本理解 我們講到 二叉搜尋樹 單向鍊錶的問題,為了解決這個問題,我們引入了平衡二叉搜尋樹。所謂平衡二叉搜尋樹,必須滿足 bst 的特性。何為平衡,每個節點的平衡因子的絕對值 1.那麼平衡因子如何計算呢?大體思路 計算每個節點的高度高度 max 左子樹高度,右子樹高度 1每...

二叉樹左旋和右旋

樹的旋轉,分為左旋和右旋,以下借助圖來做形象的解釋和介紹 1.左旋 右子為軸,當前結點左旋 如上圖所示 當在某個結點pivot上,做左旋操作時,我們假設它的右孩子y不是nil t pivot可以為樹內任意右孩子而不是nil t 的結點。左旋以pivot到y之間的鏈為 支軸 進行,它使y成為該孩子樹新...