删除数值一般来说,须要依据以下几种情况分别进行处理:1.须要删除的节点没有左儿子,那么把右儿子提上去2.须要删除的节点的左儿子没有右儿子,那么就把左儿子提上去3.以上两种情况都不满足的话,就把左儿子的子孙中最大的节点提到须要删除的节点上和堆一样。非常多情况下不须要自己实现二叉搜索树,使用C++中的STL,STL里有set和map容器,set是使用erc搜索树维护集合的容器,而map则是维护键和键相应的值得容器*/#include #include using namespace std;int main(){ set s; //声明 s.insert(1); //插入元素 s.insert(3); s.insert(5); set ::iterator ite;; //查找元素 ite = s.find(1); if (ite == s.end()) puts("not found"); else puts("found"); ite = s.find(2); if (ite == s.end()) puts("not found"); else puts("found"); s.erase(3); //删除元素 if (s.count(3) != 0) //其它的查找元素的方法 puts("found"); else puts("not found"); for (ite = s.begin(); ite != s.end(); ++ite){ //遍历全部元素 printf("%d\n", *ite); } return 0;}#include #include