文章 2023-05-23 来自:开发者社区

【C++】set和map的底层AVL树的实现(下)

下面我们再看h==1的情况: h==1有两种情况,要不在60的左树插入,要不在60的右树插入,不同的是如果插入在60的左树那么parent的平衡因子会变成1,其他两个节点的平衡因子还是0.当插入的节点在60的右边,那么只有subL的平衡因子变成-1,其他的平衡因子变成0,下面我们写先左旋再右旋的代码:void RotateLR(Node* parent) { Node* subL =...

【C++】set和map的底层AVL树的实现(下)
文章 2023-05-23 来自:开发者社区

【C++】set和map的底层AVL树的实现(上)

前言上一篇文章对 map/multimap/set/multiset 进行了简单的介绍,在其文档介绍中发现,这几个容器有个共同点是:其底层都是按照二叉搜索树来实现的 ,但是二叉搜索树有其自身的缺陷,假如往树中插入的元素有序或者接近有序,二叉搜索树就会退化成单支树,时间复杂度会退化成 O(N) ,因此map 、 set 等关联式容器的底层结构是对二叉树进行了平衡处理,即采用平衡树来实现。AVL树的....

【C++】set和map的底层AVL树的实现(上)

本页面内关键词为智能算法引擎基于机器学习所生成,如有任何问题,可在页面下方点击"联系我们"与我们沟通。