二叉樹 set集合容器

2021-08-04 14:54:35 字數 1297 閱讀 8591

set集合容器實現了紅黑樹(red-black tree)的平衡二叉搜尋樹的資料結構,在插入元素時,它會自動調整二叉樹的排列,把該元素放到適當的位置,以確保每個子樹根節點的鍵值大於左子樹所有節點的鍵值,而小於右子樹所有檢點的鍵值;另外,還得確保根節點左子樹的高度與右子樹的高度相等,這樣,二叉樹的高度最小,從而搜尋速度最快。

set容器不會插入重複相同鍵值的元素,而採取忽略處理。下面網上找的一張set容器的

對於set容器中的鍵值,不可直接去修改。因為如果把容器中的乙個鍵值修改了,set容器會根據新的鍵值去旋轉子樹,不斷保持平衡。

而multiset多重集合容器與set一樣,也是使用紅黑樹來組織元素資料,唯一不同的是,multiset允許重複的元素鍵值插入,而set則不允許。

下面是網上找的一張multiset多重集合容器

set、multiset容器的基本操作:

#includesets;			//集合容器 

multisetms; //多重集合容器

/*插入元素n*/

s.insert(n);

ms.insert(n);

/*刪除元素n*/

s.erase(n);

ms.erase(n);

/*查詢元素n*/

s.find(n);

ms.erase(n);

/*清空容器*/

s.clear();

ms.clear();

/*返回容器個數*/

s.size();

ms.size();

元素的遍歷用到迭代器(反向迭代器)遍歷

嗯下面就是在vc中的測試:

#include#includeusing namespace std;

int main()

{ int j;

int ch;

int sum;

sets;

set::iterator it;

set::reverse_iterator rit;

printf("請輸入要插入元素個數:");

scanf("%d",&sum);

printf("請輸入要插入的元素:");

for(int i=0;i

二叉樹 二叉樹

題目描述 如上所示,由正整數1,2,3 組成了一顆特殊二叉樹。我們已知這個二叉樹的最後乙個結點是n。現在的問題是,結點m所在的子樹中一共包括多少個結點。比如,n 12,m 3那麼上圖中的結點13,14,15以及後面的結點都是不存在的,結點m所在子樹中包括的結點有3,6,7,12,因此結點m的所在子樹...

樹 二叉樹 滿二叉樹 完全二叉樹 完滿二叉樹

目錄名稱作用根 樹的頂端結點 孩子當遠離根 root 的時候,直接連線到另外乙個結點的結點被稱之為孩子 child 雙親相應地,另外乙個結點稱為孩子 child 的雙親 parent 兄弟具有同乙個雙親 parent 的孩子 child 之間互稱為兄弟 sibling 祖先結點的祖先 ancesto...

二叉樹,完全二叉樹,滿二叉樹

二叉樹 是n n 0 個結點的有限集合,它或者是空樹 n 0 或者是由乙個根結點及兩顆互不相交的 分別稱為左子樹和右子樹的二叉樹所組成。滿二叉樹 一顆深度為k且有2 k 1個結點的二叉樹稱為滿二叉樹。說明 除葉子結點外的所有結點均有兩個子結點。所有葉子結點必須在同一層上。完全二叉樹 若設二叉樹的深度...