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

人力资源公司加盟合作厦门seo关键词优化代运营

人力资源公司加盟合作,厦门seo关键词优化代运营,怎么做网站电影,虎门微网站建设目录 资源已上传 实现代码 测试代码 资源已上传 部分图片 实现代码 注意判断是否为红黑树的代码实现&#xff0c;实现代码中红黑树的删除 #pragma once #include<iostream> using namespace std;enum Color_Type {Red,Black };template<class K,class V> str…

目录

资源已上传

实现代码

测试代码


资源已上传

部分图片

实现代码

注意判断是否为红黑树的代码实现,实现代码中红黑树的删除

#pragma once
#include<iostream>
using namespace std;enum Color_Type
{Red,Black
};template<class K,class V>
struct RBTreeNode
{pair<K, V> _kv;RBTreeNode* _parent;RBTreeNode* _left;RBTreeNode* _right;Color_Type _color;RBTreeNode(const pair<K, V> kv): _kv(kv), _parent(nullptr), _left(nullptr), _right(nullptr), _color(Red){}};template<class K, class V>
class RBTree
{typedef RBTreeNode<K, V> Node;
private:Node* _root;
public:RBTree():_root(nullptr){}bool Insert(const pair<K, V>& kv){if (_root == nullptr){_root = new Node(kv);_root->_color = Black;return true;}Node* cur = _root;//指向当前节点的位置Node* parent = nullptr;//当前节点的父节点//找到插入位置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);cur->_color = Red;if (cur->_kv.first < parent->_kv.first) {parent->_left = cur;cur->_parent = parent;}else{parent->_right = cur;cur->_parent = parent;}//父节点为红色,插入后还需做调整while (parent && parent->_color == Red){Node* grandfather = parent->_parent;if (parent == grandfather->_left){Node* uncle = grandfather->_right;if (uncle && uncle->_color == Red){// 变色parent->_color = uncle->_color = Black;grandfather->_color = Red;// 继续向上处理cur = grandfather;parent = cur->_parent;}else//uncle不存在或uncle为黑{if (cur == parent->_left){//	  g//	p//crotateR(grandfather);parent->_color = Black;grandfather->_color = Red;}else{//	g//p	//	crotateL(parent);rotateR(grandfather);cur->_color = Black;grandfather->_color = Red;}break;}}else{Node* uncle = grandfather->_left;// u存在且为红if (uncle && uncle->_color == Red){// 变色parent->_color = uncle->_color = Black;grandfather->_color = Red;// 继续向上处理cur = grandfather;parent = cur->_parent;}else{if (cur == parent->_right){// g//	  p//       crotateL(grandfather);grandfather->_color = Red;parent->_color = Black;}else{// g//	  p// crotateR(parent);rotateL(grandfather);cur->_color = Black;grandfather->_color = Red;}break;}}}_root->_color = Black;return true;}bool IsBalance(){return _IsBalance(_root);}int Height(){return _Height(_root);}bool checkColor(Node* root, int blacknum, int basenum){if (root == nullptr){if (blacknum != basenum){return false;}return true;}if (root->_color == Black){++blacknum;}if (root->_parent && root->_parent->_color == Red && root->_color == Red){cout << root->_kv.first << "出现连续红色节点" << endl;return false;}return  checkColor(root->_left, blacknum, basenum) && checkColor(root->_right, blacknum, basenum);}
private:void rotateL(Node* parent){Node* subR = parent->_right;Node* subRL = subR->_left;Node* pparent = parent->_parent;//1.建立subRL与parent之间的关系//左子树滑动parent->_right = subRL;if (subRL) {subRL->_parent = parent;}//2.建立subR和parent之间的关系//更新右子树的左子树subR->_left = parent;parent->_parent = subR;//3.建立pparent和subR之间的关系//与上一个节点建立连接if (parent == _root){_root = subR;subR->_parent == nullptr;}else{subR->_parent = pparent;if (parent = pparent->_left) {pparent->_left = subR;}else {pparent->_right = subR;}}}void rotateR(Node* parent){Node* subL = parent->_left;Node* subLR = subL->_right;Node* pparent = parent->_parent;//滑动parent->_left = subLR;if (subLR) {subLR->_parent = parent;}//更新左子树的右子树subL->_right = parent;parent->_parent = subL;if (parent == _root) {_root = subL;subL->_parent = nullptr;}else {subL->_parent == pparent;if (parent = pparent->_left) {pparent->_left = subL;}else {pparent->_right = subL;}}}int _Height(Node* root){if (!root) {return 0;}int left = _Height(root->_left);int right = _Height(root->_right);return left > right ? left + 1 : right + 1;}bool _IsBalance(Node* root){if (root == nullptr){return true;}if (root->_color != Black){return false;}int basenum = 0;Node* cur = _root;while (cur){if (cur->_color == Black) {++basenum;}cur = cur->_left;}return checkColor(root, 0, basenum);}};

测试代码

#include "RB_tree.h"
#include<vector>int main()
{const int N = 10;vector<int> v;v.reserve(N);srand(time(0));for (size_t i = 0; i < N; i++){v.push_back(i);}for (auto i : v){cout << i << " ";}cout << endl;RBTree<int, int> rbt;for (auto e : v){rbt.Insert(make_pair(e, e));cout << "Insert:" << e << endl;}cout << rbt.Height() << endl;if (rbt.IsBalance()){cout << "ok" << endl;}return 0;
}

http://www.ds6.com.cn/news/88031.html

相关文章:

  • 北京网站外包关键词优化最好的方法
  • 电子商务网站建设可用性五个方面nba排名最新赛程
  • 做电影网站被告版权2023疫情第三波爆发时间
  • 建设银行ETC的网站是哪个获客渠道找精准客户
  • 000webhost wordpress关键词快速排名seo怎么优化
  • 安吉做企业网站最近国家新闻
  • 建设银行网站官网aso优化师
  • 可以注册邮箱的网站怎样建网站
  • 做图素材网站开通会员哪个好seo技术306
  • 建网站云空间百度直播
  • asp.net 网站 项目 区别seo好学吗入门怎么学
  • 深圳高端品牌网站设计网络优化有前途吗
  • 自媒体 power by wordpress网站优化排名推广
  • 有什么网站可以做运动网站seo分析常用的工具是
  • 电商网站开发测试数据谁给提供竞价托管外包代运营
  • 网页源码怎么做网站西安网络推广营销公司
  • 微信网页网站怎么做新闻最新消息
  • 专业建站lhznkj短视频seo排名
  • wordpress广告位插件哪个好网站关键词优化排名外包
  • 绵阳做网站的有哪些免费网站 推广网站
  • iis添加网站的物理路径做一个网站的步骤
  • 如何使用jq做弹幕网站天津网站制作系统
  • 个人网站模板代码今日新闻联播主要内容摘抄
  • 网站做直播需要资质吗今日预测足球比分预测
  • 做网站坂田最近新闻头条最新消息
  • 有域名在本机上做网站百度seo优化推广公司
  • 网站做微信链接北京seo报价
  • 深圳手机端网站建设短链接生成器
  • 花生壳如何建设网站怎么看百度指数
  • 商城网站建设流程图百度指数功能模块有哪些