stl中的平衡二叉樹資料結構
需求:需要在大量增加、刪除資料的同時,還能進行大量的資料查詢。
目標:增加、刪除、查詢資料的操作都能在
set:
multimap:
map:
定義格式:
t為資料型別,st為變數名。multisetst;
排序規則:當表示式"a.
insert()
;//新增
st.find()
;//查詢
st.erase()
;//刪除樣例:
新增,排序並輸出長度為10的陣列a
a[10]=;
**:
multiset::iterator p;#include
#include
#include<
set>
using namespace std;
int main
;for
(int i=
0;i<
10;i++
) multiset
::iterator i;
//迭代器,類似於指標
for(i=st.
begin()
;i!=st.
end();
++i)
cout<<
*i<<
",";
cout<}
p是迭代器,相當於指標,可用於指向multiset中的元素
ps:訪問multiset中的元素需要通過迭代器。
與指標的不同:
multiset上的迭代器可++,–,可用==和!=進行比較,但不可以比大小,不可以加減整數,不可相減。
自定義規則格式:
set容器中不能有重複的元素。(這可能會導致在set中插入元素失敗)struct rule1
multiset st;
#include
#include
#include<
set>
using namespace std;
int main()
;for
(int i=
0;i<10;
++i)
st.insert
(a[i]);
cout
/會發現輸出長度為8.
set::iterator i;
for(i=st.
begin()
;i!=st.
end();
++i)
cout<<
*i<<
",";
//可發現此處輸出為:1,2,3,5,6,7,8,12
cout
::iterator,bool> result=st.
insert(2
);if(
!result.second)
//此處條件成立則說明插入失敗
cout<<
*result.first<<
"already exists."
cout<<
*result.first<<
"insertd."
0;
multimap容器裡的元素都是pair形式的:pairt2>型別與struct
;等價
multimap中的元素都是如下型別:multimapt2> mp;
乙個學生成績錄入和查詢系統,接受以下兩種輸入:struct
;
add name id score
query score
輸入樣例:
add jack 12 78
query 78
query 81
add percy 9 81
add marry 8 81
query 82
add tom 11 79
query 80
query 81
輸出樣例:
nobody
jack 12 78
percy 9 81
tom 11 79
tom 11 79
**:
不能有重複關鍵字的元素。#include
#include
#include
using namespace std;
struct studentinfo
;struct student
;typedef multimap
map_std
;//map_std等價於multimap
int main()
} cout<>second.name<<
" "<>second.id<<
" "<>first<}else cout <<
"nobody"
<}return0;
}
可以使用 ,下標為關鍵字,返回值為first和關鍵字相同的元素的second。
插入元素和set一樣可能出現失敗。
#include
#include
#include
using name std;
struct name student
;student students[5]
=,,,
,};typedef mapmp;
int main()
資料結構 平衡二叉樹
1 空樹是平衡二叉樹。2 如果一棵樹不為空,並且其中所有的子樹都滿足各自的左子樹與右子樹的高度差都不超過 1。下面介紹乙個簡單應用,平衡二叉樹的相關操作以後補充。給定一顆二叉樹的頭結點 head,判斷一棵樹是否是平衡二叉樹。1.1 左子樹是否為平衡二叉樹 1.2 記錄左子樹的深度,最深到達哪一層,記...
平衡二叉樹 資料結構實驗之查詢二 平衡二叉樹
剛開始接觸平衡二叉樹,沒有什麼太多要分析的。部落格裡有很多大佬們都寫的很好。平衡二叉樹就是每個節點的子樹的高度差不超過1的二叉樹。可以快速搜尋數值的一種演算法,最糟的情況就是一直找到底,但也是log n 的。還是快很多。include include include define max a b a...
資料結構 二叉樹 2 平衡二叉樹 3
前面分析了平衡二叉樹是怎麼調整平衡的,這裡就來解決另乙個問題,平衡二叉樹理論為什麼能成立?難道就不會有怎麼調都不會平衡的情況嗎?一起 一下吧。我在很早的時候就注意到了乙個問題。上圖中是一顆不平衡的二叉樹向平衡調整的一部分過程,這個過程中我發現,子樹a,b,c,d的左右關係始終都是不變的,就是從左到右...