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

黑客怎么攻击网站百度搜索优化关键词排名

黑客怎么攻击网站,百度搜索优化关键词排名,wordpress网站资源,web网站开发技术AVL树的概念:一颗AVL树要么是空树要么就是满足一下条件的二叉搜索树: 1)它的左右子树都是AVL树; 2)左子树与右子树高度之差的绝对值不超过1; 这里的左子树与右子树高度之差称为平衡因子。 以下是定义结…

AVL树的概念:一颗AVL树要么是空树要么就是满足一下条件的二叉搜索树:
1)它的左右子树都是AVL树;
2)左子树与右子树高度之差的绝对值不超过1;

这里的左子树与右子树高度之差称为平衡因子。

以下是定义结点:

template<class K,class V>struct AVLTreeNode
{AVLTreeNode(const K& k,const V& v): _pleft(NULL),_pright(NULL),_pParent(NULL), _key(k),_value(v),_bf(0)    //平衡因子{}AVLTreeNode<K,V>*  _pleft;AVLTreeNode<K,V>*  _pright;AVLTreeNode<K,V>*  _pParent;    //双亲K _key;V _value;int _bf;    //平衡因子
};

以下是AVL树类的实现:

template<class K,class V>
class AVLTree
{typedef AVLTreeNode<K,V> Node;
public:AVLTree():_pRoot(NULL){}/*AVLTree(Node* pRoot):_pRoot(pRoot){}*/Node * Rotatel(Node* pRoot){_Rotatel(pRoot);}Node * Lotatel(Node* pRoot){_Lotatel(pRoot);}void Insert(const K &key, const V &value){_InsertNor(_pRoot, key, value);}void InOrder(){_InOrder(_pRoot);cout<<endl;}bool IsBalance(){return _IsBalance(_pRoot);}size_t Height(){return _Height(_pRoot);}

以下是四个旋转函数:
1)左单旋

private:void _Rotatel(Node* parent)  //左单旋{Node* pSubR=parent->_pright;Node* pSubRL=pSubR->_pleft;Node * pPParent=parent->_pParent;parent->_pright=pSubRL;if(pSubRL)pSubRL->_pParent=parent;pSubR->_pleft =parent;parent->_pParent=pSubR;pSubR->_pParent=pPParent;if(NULL==pPParent){_pRoot=pSubR ;pSubR->_pParent = NULL;}else{if(pPParent->_pleft==parent)pPParent->_pleft=pSubR;elsepPParent->_pright=pSubR;//pSubR->_pParent = pPParent;}parent ->_bf=pSubR->_bf==0;//parent = pSubR;}

2)右单旋


void _RotateR(Node* parent)//右单旋{Node *pSubL = parent->_pleft;Node *pSubLR = pSubL->_pright;Node *ppParent = parent->_pParent;parent->_pleft = pSubLR;if (pSubLR)pSubLR->_pParent = parent;pSubL->_pright = parent;parent->_pParent = pSubL;if (NULL == ppParent){_pRoot = pSubL;pSubL->_pParent = NULL;}else{if (parent == ppParent->_pleft)ppParent->_pleft = pSubL;elseppParent->_pright = pSubL;pSubL->_pParent = ppParent;}pSubL->_bf = parent->_bf = 0;parent = pSubL;}

3)先左后右双旋

    void _RotateLR(Node* pParent){Node *pSubL = pParent->_pleft;Node *pSubLR = pSubL->_pright;_Rotatel(pParent->_pleft);_RotateR(pParent);if (-1 == pSubLR->_bf)pParent->_bf = 1;else if (1 == pSubLR->_bf)pSubL->_bf = -1;}

4)先右后左双旋

void _RotateRL(Node* pParent){Node *pSubR = pParent->_pright;Node *pSubRL = pSubR->_pleft;_RotateR(pParent ->_pright);_Rotatel(pParent);if (1 ==  pSubRL->_bf)pParent->_bf = -1;else if (-1 ==  pSubRL->_bf)pSubR->_bf = 1;}

判断这棵树是否为平衡树:

    bool _IsBalance(Node* pRoot){if (pRoot == NULL)return true;int leftHeight = _Height(pRoot->_pleft);int rightHeight = _Height(pRoot->_pright);if (rightHeight - leftHeight != pRoot->_bf){cout << "平衡因子" << endl;return false;}return (abs(leftHeight - rightHeight) <2)&&_IsBalance(pRoot->_pleft)&&_IsBalance(pRoot->_pright);}

以下是插入函数:

    bool _Insert(Node* &pRoot,const K& key,const V& value){ if(pRoot==NULL){ pRoot=new Node(key,value);return true;}else{if(key < pRoot->_key){return _Insert(pRoot->_pleft, key, value);}else if(key > pRoot->_key){return _Insert(pRoot->_pright, key, value);}elsereturn false;}}bool _InsertNor(Node* &pRoot,const K& key,const V& value){if (NULL == pRoot){_pRoot = new Node(key, value);return true;}Node *pCur = pRoot;Node *parent = NULL;while (pCur){if (key < pCur->_key){parent = pCur;pCur = pCur->_pleft;}else if (key > pCur->_key){parent = pCur;pCur = pCur->_pright;}else{return false;}}pCur = new Node(key, value);if (key < parent->_key)parent->_pleft = pCur;elseparent->_pright = pCur;pCur->_pParent = parent;if (pCur == parent->_pleft)--parent->_bf;else++parent->_bf;while (nullptr != parent){if (0==parent->_bf)return true;else if (1 == parent->_bf || -1 == parent->_bf){Node *ppParent = parent->_pParent;if (nullptr != ppParent){if (ppParent->_pleft == parent)ppParent->_bf--;elseppParent->_bf++;}parent = parent->_pParent;}else{if (2 == parent->_bf){if (1 == parent->_pright->_bf)_Rotatel(parent);else_RotateRL(parent);}else{if (-1 == parent->_pleft->_bf)_RotateR(parent);else_RotateLR(parent);}break;}}return true;}

求树的高度:

    size_t _Height(Node* pRoot){if(pRoot==NULL)return  0;else if(NULL==pRoot->_pleft&&NULL==pRoot->_pright)return 1;else{if(_Height(pRoot->_pleft)>_Height(pRoot->_pright))return _Height(pRoot->_pleft)+1;elsereturn _Height(pRoot->_pright)+1;}}

中序遍历AVL树:

    void _InOrder(Node *pRoot){if(_pRoot){_InOrder(pRoot->_pleft);cout<<pRoot->_key<<" ";_InOrder(pRoot->_pright) ;}}

以下是测试代码:

void tree1(){int a[10] = { 3, 2, 1, 4, 5, 6, 7, 10, 9, 8 };AVLTree<int, int> T;for (int i = 0; i < sizeof(a) / sizeof(a[0]); i++)T.Insert(a[i], a[i]);//cout << T.IsBalance() << endl;//T.InOrder();}
http://www.lbrq.cn/news/2767231.html

相关文章:

  • 网站建设的案例教程视频太原百度网站快速优化
  • wordpress导航主题haow网站seo关键词优化排名
  • 长春做网站团队搭建网站流程
  • 租用网站汕头网站排名
  • asp.net mvc 5 网站开发之美网站的优化和推广方案
  • 平顶山市网站建设全部视频支持代表手机浏览器
  • asp动态网站开发软件公关公司
  • wordpress网站seo设置seo技术培训江门
  • 网站开发备案需要什么合肥网站优化推广方案
  • 网站百度不到验证码怎么办啊如何做关键词优化
  • 数据可视化网站模板财经新闻每日财经报道
  • 义乌营销型网站建设seo难不难学
  • 阳江网站建设推广公司电话百度图片
  • 营销型网站建设如何优化搜索引擎的搜索功能
  • 个人网站设计毕业论文知乎福州seo优化排名推广
  • 做水产有什么网站百度识图 上传图片
  • 做网站用什么web服务器吗广告公司广告牌制作
  • 建设一个商务网站的步骤青岛百度推广多少钱
  • 做网站的素材和步骤网站如何让百度收录
  • 十堰网站制作公司电话短视频推广引流方案
  • 啤酒网站建设友情链接平台
  • 电子商务网站平台开发建设方案百度地图导航
  • 专科网站开发简历北京网络营销推广公司
  • 一起做网店网站入驻收费互联网推广怎么找渠道
  • 网站建设公司一年多少钱湖南关键词优化快速
  • 网站设计需要需要用网址生成短链接
  • 网站建设子目录创建网站的流程
  • 深圳工程造价建设信息网站广州seo网站服务公司
  • 0000网站建设广告推广平台网站
  • 东莞工商注册网站厦门seo计费
  • JavaScript 性能优化:new Map vs Array.find() 查找速度深度对比
  • Linx--MySQL--安装笔记详细步骤!
  • html页面打水印效果
  • 嵌入式第三十一天(线程间的机制,IPC机制)
  • SQL Server 2019安装教程(超详细图文)
  • 智能制造——解读37页 案例分享灯塔工厂解决方案【附全文阅读】