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

网站如何做好优化东莞网络科技公司排名

网站如何做好优化,东莞网络科技公司排名,精美合同网站建设,wordpress 黑色介绍:平衡二叉树(AVL树)是一种自平衡的二叉搜索树,具有以下特点:任意节点的左右子树高度差不超过1。这种性质通过旋转操作来维持,以保持树的平衡性。 以下是一个简单的平衡二叉树的示例图表: …

介绍:平衡二叉树(AVL树)是一种自平衡的二叉搜索树,具有以下特点:任意节点的左右子树高度差不超过1。这种性质通过旋转操作来维持,以保持树的平衡性。

以下是一个简单的平衡二叉树的示例图表:
        10
       /  \
      5    15
     / \  /  \
    3   7 13  17

在C++中,我们可以使用类来实现平衡二叉树。下面是一个简单的示例代码:

```cpp
#include <iostream>

class Node {
public:
    int key;
    Node* left;
    Node* right;
    int height;

    Node(int k) : key(k), left(nullptr), right(nullptr), height(1) {}
};

class AVLTree {
private:
    Node* root;

    int getHeight(Node* node) {
        return (node == nullptr) ? 0 : node->height;
    }

    int getBalance(Node* node) {
        return (node == nullptr) ? 0 : getHeight(node->left) - getHeight(node->right);
    }

    Node* rightRotate(Node* y) {
        Node* x = y->left;
        Node* T = x->right;

        x->right = y;
        y->left = T;

        y->height = 1 + std::max(getHeight(y->left), getHeight(y->right));
        x->height = 1 + std::max(getHeight(x->left), getHeight(x->right));

        return x;
    }

    Node* leftRotate(Node* x) {
        Node* y = x->right;
        Node* T = y->left;

        y->left = x;
        x->right = T;

        x->height = 1 + std::max(getHeight(x->left), getHeight(x->right));
        y->height = 1 + std::max(getHeight(y->left), getHeight(y->right));

        return y;
    }

    Node* insert(Node* node, int key) {
        if (node == nullptr) {
            return new Node(key);
        }

        if (key < node->key) {
            node->left = insert(node->left, key);
        } else if (key > node->key) {
            node->right = insert(node->right, key);
        } else {
            return node;
        }

        node->height = 1 + std::max(getHeight(node->left), getHeight(node->right));
        int balance = getBalance(node);

        // Left Left Case
        if (balance > 1 && key < node->left->key) {
            return rightRotate(node);
        }
        // Right Right Case
        if (balance < -1 && key > node->right->key) {
            return leftRotate(node);
        }
        // Left Right Case
        if (balance > 1 && key > node->left->key) {
            node->left = leftRotate(node->left);
            return rightRotate(node);
        }
        // Right Left Case
        if (balance < -1 && key < node->right->key) {
            node->right = rightRotate(node->right);
            return leftRotate(node);
        }

        return node;
    }

public:
    AVLTree() : root(nullptr) {}

    void insert(int key) {
        root = insert(root, key);
    }

    void display(Node* node) {
        if (node != nullptr) {
            display(node->left);
            std::cout << node->key << " ";
            display(node->right);
        }
    }

    void displayTree() {
        display(root);
    }
};

int main() {
    AVLTree tree;
    tree.insert(10);
    tree.insert(5);
    tree.insert(15);
    tree.insert(3);
    tree.insert(7);
    tree.insert(13);
    tree.insert(17);

    std::cout << "AVL Tree: ";
    tree.displayTree();
    std::cout << std::endl;

    return 0;
}
```

以上代码演示了如何实现一个简单的平衡二叉树,并在其中插入一些节点。在实践中,还可以扩展这些基本操作以满足更多需求。

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

相关文章:

  • 天津开发区网站设计公司网络推广公司深圳
  • 企业网站推广 知乎天津百度推广公司电话
  • 淘宝做详情页代码网站友情链接什么意思
  • 青岛哪家做网站好企业管理培训班哪个好
  • 模板网站国际实时新闻
  • 网站建设百度推广推广普通话ppt课件
  • 网站开发与建设主要干什么开源cms建站系统
  • 江门免费网站建站模板青岛网站制作推广
  • 阜阳网站开发网址关键词查询网站
  • 网站建设与管理相关工作岗位今日新闻头条官网
  • 婚纱网站建设案例网络运营
  • 广州seo网站百度外链查询工具
  • 洛阳市建设规划局网站东莞做网站最好的是哪家
  • 模板建网站哪个品牌好网络市场调研
  • 专业电子网站建设广点通
  • 什么语言做网站seo公司后付费
  • 装修网站建设摘要深圳网络推广方法
  • 做网站怎么接单河北百度推广
  • 油田公司健康企业建设app优化方案
  • 怎么建设音乐试听网站注册网站平台
  • 找人做app网站吗抖音seo怎么收费
  • 微信注册网站新闻媒体发布平台
  • 做电商网站的设计思路有什么淘宝网店运营
  • 网站ui升级怎么做山东公司网站推广优化
  • 网站开发亿码酷技术销售推广方案
  • 网站建设标书样本河南网站推广那家好
  • 电脑网站开发做一个网站要花多少钱
  • 鲅鱼圈网站制作国外b站不收费免费2023
  • 网站建设 中企动力福州阀门百度手机助手安卓版
  • 简单网页设计模板代码江苏seo推广