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

网站开发验收确认书google搜索引擎入口2022

网站开发验收确认书,google搜索引擎入口2022,贵阳网站建设方案维护,动态发布网站和静态发布网站二叉平衡树 BST树节点平衡操作(节点平衡 任意节点左右字输的高度不超过1) AVL树为了维护节点平衡引入了的四种节点旋转操作: 1.左孩子的左子树太高了 // 右旋转操作 child node->left; node->left child->right; child->rig…

二叉平衡树 BST树+节点平衡操作(节点平衡 任意节点左右字输的高度不超过1)

AVL树为了维护节点平衡引入了的四种节点旋转操作:

1.左孩子的左子树太高了

// 右旋转操作
child  = node->left;
node->left = child->right;
child->right = node;

 2.右孩子的右子树太高了

// 左旋转操作
child = node->right;
node->right = child->left;
child->left = node;

3.左孩子的右子树太高了

左-右旋转 左平衡操作

4.右孩子的左孩子太高了

右-左旋转 右平衡操作

#include <iostream>
#include <algorithm>using namespace std;// AVL树的实现
class AVLTree
{
private:struct Node{int key_;Node* left_;Node* right_;int height_;Node(int key) : key_(key), left_(nullptr), right_(nullptr), height_(1) {}};Node* root_;
public:AVLTree() : root_(nullptr) {}// 右旋转操作Node* rightRotate(Node* node){Node* child = node->left_;node->left_ = child->right_;child->right_ = node;// 高度更新node->height_ = max(getHeight(node->left_), getHeight(node->right_)) + 1;child->height_ = max(getHeight(child->left_), getHeight(child->right_)) + 1;return child;}// 左旋转操作Node* leftRotate(Node* node){Node* child = node->right_;node->right_ = child->left_;child->left_ = node;// 高度更新node->height_ = max(getHeight(node->left_), getHeight(node->right_)) + 1;child->height_ = max(getHeight(child->left_), getHeight(child->right_)) + 1;return child;}// 左平衡操作Node* leftBalance(Node* node){node->left_ = leftRotate(node->left_);return rightRotate(node);}// 右平衡操作Node* rightBalance(Node* node){node->right_ = rightRotate(node->right_);return leftRotate(node);}// AVL树的插入操作
public:Node* insert(Node* node, int key){if (node == nullptr){return new Node(key);}if (key < node->key_){node->left_ = insert(node->left_, key);// 检查是否需要平衡if (getHeight(node->left_) - getHeight(node->right_) > 1){if(getHeight(node->left_->left_) > getHeight(node->left_->right_))// 左孩子的左子树太高return rightRotate(node);else// 左孩子的右子树太高return leftBalance(node);}}else if(key > node->key_){node->right_ = insert(node->right_, key);// 检查是否需要平衡if (getHeight(node->right_) - getHeight(node->left_) > 1){if(getHeight(node->right_->right_) > getHeight(node->right_->left_))// 右孩子的右子树太高return leftRotate(node);else// 右孩子的左子树太高return rightBalance(node);}}// 因为子树中增加了新的节点,在递归回溯时检测更新节点高度node->height_ = max(getHeight(node->left_), getHeight(node->right_)) + 1;// 否则,key已经存在于树中,不需要插入return node;}void insert(int key){root_ = insert(root_, key);}private:// 获取节点的高度int getHeight(Node* node){// 空节点高度为0return node == nullptr ? 0 : node->height_;}// 遍历并打印AVL树
public:void inorderTraversal(Node* node){if (node == nullptr){return;}inorderTraversal(node->left_);cout << node->key_ << " ";inorderTraversal(node->right_);}
public:Node* getRoot() { return root_; }// AVL树的删除操作Node* remove(Node* node, int key){if (node == nullptr){return nullptr;}if (key < node->key_){node->left_ = remove(node->left_, key);}else if(key > node->key_){node->right_ = remove(node->right_, key);}else{if(node->left_ != nullptr && node->right_ != nullptr){}}   }// AVL树的查找操作
};int main()
{AVLTree tree;// 插入一些测试数据tree.insert(10);tree.insert(20);tree.insert(30);tree.insert(40);tree.insert(50);tree.insert(25);tree.inorderTraversal(tree.getRoot());cout << "Test data inserted successfully." << endl;return 0;
}

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

相关文章:

  • 公司网站代码湖南兼职网站建设
  • 温岭市住房和城乡建设局网站建企业网站教程
  • 南昌网站建设服务html网页设计期末大作业
  • 男朋友抱着我在教室做网站响应式企业网站设计与实现
  • 制作完整网站需要掌握哪些知识手机兼职的正规平台有哪些
  • seo网站推广有哪些音乐制作网站
  • h5免费制作网站有哪些室内展厅设计公司
  • 做滋补品销售有什么网站成都电脑培训班零基础
  • 中国贸易网是什么网站淘宝网络营销方案
  • 网站开发涉及内容如何免费创建自己的平台
  • 苏州模板建站平台广告宣传页怎么制作
  • 社区网站建设方案ppt创建网站的流程有哪些
  • 机票网站建设公司好公司部门解散调岗不同意有赔偿吗
  • 沈阳住房建设局网站哪些企业需要网络推广
  • 加快政务公开网站建设做网站对外贸有什么用
  • 垂直网站建设的关键因素网站建设公司软jian湖南岚鸿
  • 免费做网站页头图做引流去那些网站好
  • 给个营销型网站齐齐哈尔市住房城乡建设门户网站
  • 代理公司注册机构seo综合诊断工具
  • 网站301是什么意思网站开发入门教程
  • seo网站优化报价娱乐网站设计多少行业
  • 做教程网站资源放哪里有做静态网站选用什么服务器
  • 网站投注建设无线网址域名注册
  • 网站图标怎么上传淘宝 网站建设教程视频
  • 做网站软件A开头的宁波网站制作方案
  • 做照明出口的网站qq空间怎么做网站
  • 表格在网站后台是居中可到前台为什么不居中重庆网站建设外包哪家好
  • 云服务器建网站h5视频网站模板
  • 网站建设三剑客wordpress 3.9.2 漏洞
  • 手机网站导航特效用七牛做网站