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

大连自主建站模板长尾关键词有哪些

大连自主建站模板,长尾关键词有哪些,wordpress 注册没密码,娄底网站建设开发AVL树 1. 概念2. AVL节点的定义3. AVL树插入3.1 旋转 4.AVL树的验证 1. 概念 AVL树是一种自平衡二叉搜索树。它的每个节点的左子树和右子树的高度差(平衡因子,我们这里按右子树高度减左子树高度)的绝对值不超过1。AVL的左子树和右子树都是AV…

AVL树

  • 1. 概念
  • 2. AVL节点的定义
  • 3. AVL树插入
    • 3.1 旋转
  • 4.AVL树的验证

1. 概念

  1. AVL树是一种自平衡二叉搜索树。它的每个节点的左子树和右子树的高度差(平衡因子,我们这里按右子树高度减左子树高度)的绝对值不超过1。
  2. AVL的左子树和右子树都是AVL树。
  3. 比起二叉搜索树AVL树可以很好的优化二叉搜索树最坏的情况,使查询的效率达到O(log2 N)。

2. AVL节点的定义

和搜索二叉树节点相比,AVL树节点多了一个父节点和平衡因子(不是必要)需要维护。

template<class T>
typedef struct AVLTreeNode
{AVLTreeNode(const T& data):_pLeft(nullptr),_pRight(nullptr),_pParent(nullptr),_data(data),_bf(0){};//左节点、右节点、父节点AVLTreeNode<T>* _pLeft;AVLTreeNode<T>* _pRight;AVLTreeNode<T>* _pParent;T _data;//平衡因子int bf;
};

3. AVL树插入

和搜索二叉树的插入操作相比较,AVL树的插入需要多维护父节点和平衡因子。维护父节点比较简单,我们需要学习的是维护平衡因子。

当我们按照搜索二叉树的逻辑插入一个节点后,在插入这个节点之前父节点的平衡因子可能是-1/0/1这三种,如果该节点插入到父节点的左边需要将平衡因子减1,插入到右边则加1。所以插入之后平衡因子有这几种情况±1/0/±2。如果是±1,那么需要继续判断上面节点的平衡因子、如果是0,那么不需要判断了、如果是±2,那么就需要进行旋转操作

3.1 旋转

我们先说结论:1、旋转之后节点所在子树的高度会回到插入之前。2、旋转不会对上面节点平衡因子产生影响。

  1. 右单旋
    初始情况:
    在这里插入图片描述
// 右单旋void RotateR(Node* pParent){Node* parent = pParent->_parent;//变成局部的根Node* pParentL = pParent->_left;Node* pParentR = pParentL->_right;if (pParent == _proot)_proot = pParentL;pParent->_left = pParentR;if (pParentR)pParentR->_parent = pParent;pParentL->_left = pParent;pParent->_parent = pParentL;pParentL->_parent = parent;//只需要修改pParent和pParentL的平衡因子pParent->_bf = 0;pParentL->_bf = 0;return;}

旋转之后情况
在这里插入图片描述

  1. 左单旋
    初始情况:
    在这里插入图片描述
// 左单旋void RotateL(Node* pParent){Node* parent = pParent->_parent;//变成局部的根Node* pParentR = pParent->_right;Node* pParentL = pParentR->_left;//如果pParnet为根,则要修改根if (pParent == _proot)_proot = pParentR;pParent->_right = pParentL;if (pParentL)pParentL->_parent = pParent;pParentR->_left = pParent;pParent->_parent = pParentR;pParentR->_parent = parent;//只需要修改pParent和pParentR的平衡因子pParent->_bf = 0;pParentR->_bf = 0;return;}

旋转之后的情况:
在这里插入图片描述

  1. 左右双旋
    初始情况(插入可以插入到左边或右边,情况不同平衡因子也会不同):
    在这里插入图片描述
// 左右双旋void RotateLR(Node* pParent){Node* pParentL = pParent->_left;Node* pParentLR = pParentL->_right;int bf = pParentLR->_bf;RotateL(pParentL);RotateR(pParent);if (bf == 0){pParent->_bf = 0;pParentL->_bf = 0;pParentLR->_bf = 0;}else if (bf == 1){pParentL->_bf = -1;pParentLR->_bf = 0;pParent->_bf = 0;}else if (bf == -1){pParentL->_bf = 0;pParent->_bf = 1;pParentLR->_bf = 0;}return;}

旋转之后的情况:
在这里插入图片描述

  1. 右左双旋转
    初始情况:
    在这里插入图片描述
// 右左双旋void RotateRL(Node* pParent){Node* pParnetR = pParent->_right;Node* pParentRL = pParnetR->_left;int bf = pParentRL->_bf;RotateR(pParnetR);RotateL(pParent);if (bf == 0){pParent->_bf = 0;pParnetR->_bf = 0;pParentRL->_bf = 0;}else if (bf == -1){pParent->_bf = 0;pParnetR->_bf = 1;pParentRL->_bf = 0;}else if (bf == 1){pParent->_bf = -1;pParnetR->_bf = 0;pParentRL->_bf = 0;}return;}

旋转之后的情况:
在这里插入图片描述

4.AVL树的验证

  1. 验证为二叉搜索树
    中序遍历得到有序的序列就可以证明为二叉搜索树。
  2. 验证为平衡树
    看平衡因子
bool _IsBalance(Node* root, int& height){if (root == nullptr){height = 0;return true;}int leftHeight = 0, rightHeight = 0;if (!_IsBalance(root->_left, leftHeight) || !_IsBalance(root->_right, rightHeight)){return false;}if (abs(rightHeight - leftHeight) >= 2){cout <<root->_kv.first<<"不平衡" << endl;return false;}if (rightHeight - leftHeight != root->_bf){cout << root->_kv.first <<"平衡因子异常" << endl;return false;}height = leftHeight > rightHeight ? leftHeight + 1 : rightHeight + 1;return true;}

在这里插入图片描述

http://www.hkea.cn/news/815334/

相关文章:

  • 唯品会 一家专门做特卖的网站沈阳seo按天计费
  • 聊城手机网站建设郑州seo服务技术
  • 个人定做衣服店江门seo推广公司
  • 网站开发与网站建设山东济南seo整站优化费用
  • 香港疫情最新消息今天深圳seo教程
  • 维护一个网站难吗免费发布外链
  • 南安市网站建设成都今天重大新闻事件
  • 网站后台补丁如何做软文有哪几种类型
  • 网站建设的费用包括哪些内容资讯门户类网站有哪些
  • 一站式服务图片制作网页的基本步骤
  • 个人网站建设网站网络网站推广
  • asp做的药店网站模板北京百度快照推广公司
  • 网站建设泉州效率网络seo的优化策略有哪些
  • 页网站无锡网站制作推广
  • 一流的龙岗网站建设目前最靠谱的推广平台
  • 企业营销型网站费用短视频推广引流
  • 化妆品可做的团购网站有哪些seo研究中心南宁线下
  • 网站空间域名是什么做电商必备的几个软件
  • 软件公司运营是做什么的seo公司运营
  • 专业云南做网站福州短视频seo服务
  • 网站开发技术期中试题电商培训机构排名
  • 网站设计连接数据库怎么做如何进行百度推广
  • 日本网站图片做淘宝代购网络营销促销方案
  • 网站开发导航栏网站制作的费用
  • 盐城网站设计网站流量统计工具
  • 网站上如何做相关推荐郑州建网站的公司
  • 漂亮大气的装潢室内设计网站模板 单页式html5网页模板包前端优化
  • 论坛网站开发开题报告青岛百度推广多少钱
  • 文山做网站如何优化百度seo排名
  • 上海展陈设计公司有哪些成都网站seo性价比高