二叉樹的左右旋轉

2021-10-03 08:13:18 字數 967 閱讀 1768

左旋:以某個結點作為支點(旋轉結點),其右子結點變為旋轉結點的父結點,右子結點的左子結點變為旋轉結點的右子結點,左子結點保持不變。

旋轉前 紅節點為grand,黃節點為parent,l為child

grand.right = child;

parent.left = grand;

// 維護各個節點的parent

parent.parent = grand.parent;

// 讓parent稱為子樹的根節點

if (grand.isleftchild()) else if (grand.isrightchild()) else

// 維護child的parent屬性

if (child != null)

// 維護g的parent屬性

grand.parent = parent;// 維護g的parent屬性

右旋:以某個結點作為支點(旋轉結點),其左子結點變為旋轉結點的父結點,左子結點的右子結點變為旋轉結點的左子結點,右子結點保持不變。

旋轉前 紅節點為grand,黃節點為parent,r為child

grand.left= child;

parent.right= grand;

// 維護各個節點的parent

parent.parent = grand.parent;

// 讓parent稱為子樹的根節點

if (grand.isleftchild()) else if (grand.isrightchild()) else

// 維護child的parent屬性

if (child != null)

// 維護g的parent屬性

grand.parent = parent;// 維護g的parent屬性

二叉樹左旋右旋

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

二叉樹左旋和右旋

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

二叉樹左旋和右旋

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