日韩性视频-久久久蜜桃-www中文字幕-在线中文字幕av-亚洲欧美一区二区三区四区-撸久久-香蕉视频一区-久久无码精品丰满人妻-国产高潮av-激情福利社-日韩av网址大全-国产精品久久999-日本五十路在线-性欧美在线-久久99精品波多结衣一区-男女午夜免费视频-黑人极品ⅴideos精品欧美棵-人人妻人人澡人人爽精品欧美一区-日韩一区在线看-欧美a级在线免费观看

歡迎訪問 生活随笔!

生活随笔

當前位置: 首頁 > 编程资源 > 编程问答 >内容正文

编程问答

平衡术AVL

發布時間:2024/1/18 编程问答 31 豆豆
生活随笔 收集整理的這篇文章主要介紹了 平衡术AVL 小編覺得挺不錯的,現在分享給大家,幫大家做個參考.

還差刪除功能

#include<iostream> #include <algorithm> using namespace std; struct node{int w, height; //w為結點權值node *lchild, *rchild; }; node* newNode(int w){ //生成一個新節點node* Node = new node;Node->w = w;Node->height = 1;Node->lchild = Node->rchild = NULL;return Node; } int getHeight(node* root){if (root == NULL) return 0;return root->height; } int getBF(node* root){ //計算平衡因子return getHeight(root->lchild) - getHeight(root->rchild); } void updateHeight(node* root){root->height = max(getHeight(root->lchild), getHeight(root->rchild)) + 1; } void L(node* &root){ //左旋node* temp = root->rchild;root->rchild = temp->lchild;temp->lchild = root;updateHeight(root);updateHeight(temp);root = temp; } void R(node* root){ //右旋node* temp = root->lchild;root->lchild = temp->rchild;temp->rchild = root;updateHeight(root);updateHeight(temp);root = temp; } void insert(node* &root,int w){ //插入節點if (root == NULL){root = newNode(w);return;}if (w < root->w){insert(root->lchild, w);updateHeight(root);if (getBF(root) == 2){if (getBF(root->lchild) == 1) //LL型R(root);else if (getBF(root->lchild) == -1){ //LR型L(root->lchild);R(root);}}}else{ insert(root->rchild, w);updateHeight(root);if (getBF(root) == -2){if (getBF(root->rchild) == -1) //RR型L(root);else if (getBF(root->rchild) == 1){ //RL型R(root->rchild);L(root);}}} } void search(node* root, int w){if (root == NULL){cout << "查找失敗!" << endl;return;}if (w == root->w)cout << w << endl;else if (w < root->w)search(root->lchild, w);else if (w > root->w)search(root->rchild, w); } node* create(int data[], int n){node* root = NULL;for (int i = 0; i < n; i++)insert(root, data[i]);return root; } int main() {int a[6] = { 3, 6, 1, 8, 7, 9 };node* root = create(a, 6);return 0; }

總結

以上是生活随笔為你收集整理的平衡术AVL的全部內容,希望文章能夠幫你解決所遇到的問題。

如果覺得生活随笔網站內容還不錯,歡迎將生活随笔推薦給好友。