Sicily-AVLtree的简单构建

来源:互联网 发布:自动刷弹幕软件 编辑:程序博客网 时间:2024/06/16 19:23

这里写图片描述


想了解更多关于AVL树的资料请点击这里


本题代码

#include <iostream>using namespace std ;struct node{    node *left ;    node *right ;    int height ;    int key ;};int max(int a , int b){    return (a > b ? a : b) ;}int Height(node * tree){    if (tree == NULL)    {        return 0 ;    }    else    {        return tree->height ;    }}//RRnode *right_transition(node *tree){    node *tree_now ;    tree_now = tree -> right ;    tree -> right = tree_now -> left ;    tree_now -> left = tree ;    tree -> height = max(Height(tree->left), Height(tree->right)) + 1;    tree_now -> height = max(Height(tree_now->left), Height(tree->right)) + 1 ;    return  tree_now ;}//LLnode * left_transition(node *tree){    node * tree_now ;    tree_now = tree -> left ;    tree -> left  = tree_now -> right ;    tree_now -> right = tree ;    tree -> height = max(Height(tree->left), Height(tree->right)) + 1;    tree_now -> height = max(Height(tree_now->left), Height(tree->right)) + 1 ;    return tree_now ;}//LRnode * left_right_transition(node *tree){    tree -> left = right_transition(tree->left);    return left_transition(tree) ;}//RLnode * right_left_transition(node *tree){    tree -> right = left_transition(tree -> right) ;    return right_transition(tree) ;}node * creat_node(int key , node *left , node *right){    node *temp = new node() ;    temp -> right = right ;    temp -> left = left ;    temp -> key = key ;    temp -> height = 0 ;    return temp ;}node * insert(int key, node * tree){    if (tree == NULL)    {        tree = creat_node(key, NULL, NULL) ;    }    else if (key < tree -> key)    {        tree->left = insert(key, tree->left);        if (Height(tree->left) - Height(tree->right) == 2)        {            if (key < tree->left->key)            {                tree = left_transition(tree);            }            else            {                tree = left_right_transition(tree) ;            }        }    }    else if (key > tree -> key)    {        tree->right = insert(key, tree->right) ;        if (Height(tree->right) - Height(tree->left) == 2)        {            if (key > tree -> right -> key)            {                tree = right_transition(tree) ;            }            else            {                tree = right_left_transition(tree) ;            }        }    }    tree -> height = max(Height(tree->left), Height(tree->right)) + 1 ;    return tree ;}void pre(node *temp){    if ( temp )    {        cout << temp->key << ' ' ;        pre(temp->left);        pre(temp->right) ;    }}int main(){    int number = 0 ;    cin >> number ;    for (int i = 0 ; i < number ; i ++ )    {        int test_case = 0 ;        cin >> test_case ;        node * root = NULL ;        for (int j = 0 ; j < test_case ; j ++ )        {            int temp = 0 ;            cin >> temp ;            root = insert(temp, root);        }        pre(root) ;        cout << endl ;    }}
阅读全文
'); })();
0 0
原创粉丝点击
热门IT博客
热门问题 老师的惩罚 人脸识别 我在镇武司摸鱼那些年 重生之率土为王 我在大康的咸鱼生活 盘龙之生命进化 天生仙种 凡人之先天五行 春回大明朝 姑娘不必设防,我是瞎子 巨人族 非洲象人族 象人族 人族崛起 人族领袖 洪荒人族 人族 象人族图片 人族纪元 像人族 洪荒人族天帝 玄幻之人族天帝 洪荒人族始祖 洪荒我人族天帝 洪荒人族大帝 人族帝国大崛起 洪荒之人族有圣 人族圣体在洪荒 洪荒人族皇者 洪荒之人族天帝 星际争霸人族 魔兽人族打法 星际争霸2人族 日本58人亻本图 人本集团 人之初性本恶 人本男网11005 人本主义 e人e本 人本帆布鞋 人本 人本集团有限公司 9本阵型没人敢打的阵 人本主义教学理论 7本部落战没人敢打的阵 上海人本轴承有限公司 人本轴承 人本风流 人本管理 人本帆布鞋旗舰店 人本鞋