- 二叉搜索树的结构(可高效完成以下操作)
- 插入一个数值
- 查询是否包含某个数值
- 删除某个数值
2.特点
对于所有结点,满足左子树上的所有节点都比自己的小,右子树上的所有结点都比自己大。
3.复杂度
无论哪种操作,都与树的高度成正比。O(log n)
4.set —— STL 中用二叉搜索树维护集合的容器
//声明
set<int> s;
//插入元素
s.insert(1);
s.insert(5);
//删除元素
s.erase(5);
//查找元素
set<int> :: iterator it;
it = s.find(1);
if(it == s.end()) puts("not found");
//其他的查找元素的方法
if(s.count(3) != 0) puts("found");
//遍历所有元素的方法
for(it = s.begin(); it != s.end(); it++)
cout << *it << endl;
5.map —— 维护键和键对应的值的容器
//声明(int为键,const char*为值)
map<int, const char*> m;
//插入元素
m.insert(make_pair(1, "ONE"));
m.insert(make_pari(10, "TEN"));
m[100] = "HUNDRED"; //其他写法
//查找元素
map<int, const char*> :: iterator it;
it = m.find(1);
puts(it->second);
puts(m[10]); //其他写法
//删除元素
m.erase(10);
//遍历所有元素
for(it = m.begin(); it != m.end(); it++)
printf("%d: %s\n", it->first, it->second);