当前位置: 首页 > wzjs >正文

侦探公司做网站的资料360网站排名优化

侦探公司做网站的资料,360网站排名优化,wordpress商业授权价格,广告设计公司的进项有哪些AVL树 1.AVL树1.AVL的概念2.平衡因子 2.AVl树的实现2.1AVL树的结构2.2AVL树的插入2.3 旋转2.3.1 旋转的原则 1.AVL树 1.AVL的概念 AVL树可以是一个空树。 它的左右子树都是AVL树,且左右子树的高度差的绝对值不超过1。AVL树是一颗高度平衡搜索二叉树,通…

AVL树

  • 1.AVL树
    • 1.AVL的概念
    • 2.平衡因子
  • 2.AVl树的实现
    • 2.1AVL树的结构
    • 2.2AVL树的插入
    • 2.3 旋转
      • 2.3.1 旋转的原则

1.AVL树

1.AVL的概念

AVL树可以是一个空树。
它的左右子树都是AVL树,且左右子树的高度差的绝对值不超过1。AVL树是一颗高度平衡搜索二叉树,通过控制高度差去控制平衡。
AVL树整体结点数量和分布和完全二叉树类似,高度可以控制在 logN ,那么增删查改的效率也可以控制在O(logN ) ,相比二叉搜索树有了本质的提升。

2.平衡因子

结点的平衡因子=右子树的高度减去左子树的高度,也就是说任何结点的平衡因子等于0/1/-1,AVL树并不是必须要平衡因子,但是有了平衡因子可以更方便我们去进行观察和控制树是否平衡,就像⼀个风向标一样。
为什么AVL树是高度平衡搜索二叉树,要求高度差不超过1,而不是高度差是0呢?
因为例如二和四个结点无法达到0.

2.AVl树的实现

2.1AVL树的结构

template<class K, class V>
struct AVLTreeNode
{// 需要parent指针,后续更新平衡因⼦可以看到pair<K, V> _kv;AVLTreeNode<K, V>* _left;AVLTreeNode<K, V>* _right;AVLTreeNode<K, V>* _parent;int _bf; // balance factorAVLTreeNode(const pair<K, V>& kv):_kv(kv), _left(nullptr), _right(nullptr), _parent(nullptr), _bf(0){}
};
template<class K, class V>
class AVLTree
{typedef AVLTreeNode<K, V> Node;
public://...
private:Node * _root = nullptr;
};

2.2AVL树的插入

bool Insert(const pair<K, V>& kv)
{if (_root == nullptr){_root = new Node(kv);return true;}Node* parent = nullptr;Node* cur = _root;while (cur){if (cur->_kv.first < kv.first){parent = cur;cur = cur->_right;}else if (cur->_kv.first > kv.first){parent = cur;cur = cur->_left;}else{return false;}}cur = new Node(kv);if (parent->_kv.first < kv.first){parent->_right = cur;}else{parent->_left = cur;}cur->_parent = parent;// 更新平衡因⼦while (parent){// 更新平衡因⼦if (cur == parent->_left)parent->_bf--;elseparent->_bf++;if (parent->_bf == 0){// 更新结束break;}else if (parent->_bf == 1 || parent->_bf == -1){// 继续往上更新cur = parent;parent = parent->_parent;}else if (parent->_bf == 2 || parent->_bf == -2){// 不平衡了,旋转处理break;}else{assert(false);}}return true;
}

2.3 旋转

2.3.1 旋转的原则

保持搜索树的规则
让旋转的树从不满足变平衡,其次降低旋转树的高度
旋转总共分为四种,左单旋/右单旋/左右双旋/右左双旋。

http://www.dtcms.com/wzjs/485027.html

相关文章:

  • 洛阳做网站公司哪家好google全球推广
  • 公司网站开发创业百度收录入口在哪里查询
  • 注销网站 取消接入郑州网站制作
  • 手机黑客网站大全百度seo可能消失
  • 男和男做的视频网站100种宣传方式
  • ruby做的网站开发宁德市属于哪个省
  • 福建省城乡和建设厅网站百度客服联系方式
  • 中山网络推广公司seo推广服务
  • 网站建设 数据分析关键词排名快速提升
  • wordpress dux1.4宁波seo外包快速推广
  • 建设银行官方网站买五粮液酒市场营销策划方案范文
  • 江都建设局网站排行榜百度
  • 个人网站建设设计饥饿营销的十大案例
  • 做网站虚拟主机和云服务器绍兴seo
  • 南宁有做校园门户网站的吗青岛seo精灵
  • 成品网站怎样建设上海营销seo
  • 政府类网站建设 经费nba常规赛
  • 万和城官方网站南宁seo排名首页
  • 供应邯郸网站建设seo是什么意思电商
  • 泉州 网站建设公司首选百度联盟个人怎么接广告
  • 网站正在建设 h5模板360竞价推广怎么做
  • 做公众号app 网站 app百度公司招聘岗位
  • 北京人力资源网站seo技术团队
  • 石家庄网站建设流程百度关键词搜索排行榜
  • 昆明网站建设推广服务今天
  • 黄村网站建设一条龙长沙建站seo公司
  • 十大免费ppt网站下载公司网站建设哪个好
  • 成人高考什么时候出成绩吉林seo管理平台
  • 大红门做网站的公司各大引擎搜索入口
  • 平谷微网站建设百度知道小程序