pat1135平衡二叉樹紅黑樹

2021-10-03 23:09:31 字數 720 閱讀 7858

先簡單陳述一下題目,先給乙個總個數,之後給乙個數節點個數和這個樹的前序遍歷,最後讓輸出這個數是不是紅黑樹

紅黑樹要求

1.根節點為黑

2.葉子(null)為黑

3.紅點的兒子為黑

4.每乙個節點左右樹下面黑點數量必須同

其實一看只給前序遍歷有點慌,但是勿慌,因為這是平衡二叉樹,所以完全可以根據連續遍歷然後往裡面插入資料,直接建樹

最後卡在了怎麼計算左右樹中的黑點上,最後參考了網上才過的,不得不說自己還需努力啊

int n, s = -1;

bool pan = true;

struct no ;

struct no* inst(int s,no *head)

else

}else

return head;

}void search(no *root)

if (root->n > 0)   //計算每個點左右的黑點是否相等

if (root->n < 0)

if (root->ln != root->rn)

}int main(void)

if (head->n < 0)

search(head);

if (pan == false)

printf("no\n");

else

printf("yes\n");

}return 0;

}

平衡二叉樹 紅黑樹

顏色調整,第一種情況uncle存在且為紅色,第二種和第三種情況,uncle不存在 uncle存在且為黑色,先處理第三種情況,針對parent進行左單旋。test.cpp include using namespace std enum colour template struct rbtreenod...

紅黑樹與平衡二叉樹

性質1.節點是紅色或黑色。性質2.根節點是黑色。性質3.每個葉子節點都是黑色的空節點 nil節點 性質4 每個紅色節點的兩個子節點都是黑色。從每個葉子到根的所有路徑上不能有兩個連續的紅色節點 性質5.從任一節點到其每個葉子的所有路徑都包含相同數目的黑色節點。這些約束強制了紅黑樹的關鍵性質 從根到葉子...

二叉查詢樹 平衡二叉樹 紅黑樹

先看幾個基本概念 樹 由根出發,指向n個孩子,孩子再指向孫子。這樣一種資料結構 二叉樹 每個接點最多有兩個孩子的樹 二叉查詢樹 每個結點的左子樹 結點 右子樹 平衡二叉樹 每個結點左右子樹的高度差不大於1 紅黑樹 從任一節點到其每個葉子的所有簡單路徑 都包含相同數目的黑色節點。當然還有其它性質 幾點...