欧美日韩不卡一区二区三区,www.蜜臀.com,高清国产一区二区三区四区五区,欧美日韩三级视频,欧美性综合,精品国产91久久久久久,99a精品视频在线观看

C語言

AVL樹的c語言實(shí)現(xiàn)

時(shí)間:2025-05-27 07:46:52 C語言 我要投稿
  • 相關(guān)推薦

AVL樹的c語言實(shí)現(xiàn)

  導(dǎo)語:C語言的設(shè)計(jì)目標(biāo)是提供一種能以簡易的方式編譯、處理低級(jí)存儲(chǔ)器、產(chǎn)生少量的機(jī)器碼以及不需要任何運(yùn)行環(huán)境支持便能運(yùn)行的編程語言。下面我們來看看AVL樹的c語言實(shí)現(xiàn),希望對(duì)大家有所幫助。

  AVL樹的c語言實(shí)現(xiàn):在計(jì)算機(jī)科學(xué)中,AVL樹是最先發(fā)明的自平衡二叉查找樹。在AVL樹中任何節(jié)點(diǎn)的兩個(gè)子樹的高度最大差別為一,所以它也被稱為高度平衡樹。查找、插入和刪除在平均和最壞情況下都是O(log n)。增加和刪除可能需要通過一次或多次樹旋轉(zhuǎn)來重新平衡這個(gè)樹。

  1.節(jié)點(diǎn)

  (1)節(jié)點(diǎn)的定義

1
2
3
4
5
6
7
8
9
typedef int KeyType;          
typedef struct AvlNode          
{          
   KeyType key;     //數(shù)據(jù)          
   AvlNode *leftchild;    //左孩子          
   AvlNode *rightchild;   //右孩子          
   AvlNode *parent;    //雙親結(jié)點(diǎn)          
   int balance;           //平衡因子          
}AvlNode,*AvlTree;          

  (2)結(jié)點(diǎn)的創(chuàng)建

1
2
3
4
5
6
7
8
9
10
11
12
AvlNode *BuyNode()          
{          
   AvlNode *p =(AvlNode *)malloc(sizeof(AvlNode));          
   if( p != NULL)          
   {          
       p->leftchild = NULL;          
       p->rightchild = NULL;          
       p->parent = NULL;          
       p->balance = 0;          
   }          
   return p;          
}          

  2.旋轉(zhuǎn)

  如果在AVL樹中進(jìn)行插入或刪除節(jié)點(diǎn)后,可能導(dǎo)致AVL樹失去平衡。這種失去平衡的可以概括為4種姿態(tài):左單旋轉(zhuǎn),右單旋轉(zhuǎn),左平衡,右平衡。(1)左單旋轉(zhuǎn):也叫左左旋轉(zhuǎn)。

【AVL樹的c語言實(shí)現(xiàn)】相關(guān)文章:

C語言程序的實(shí)現(xiàn)09-27

C語言的HashTable簡單實(shí)現(xiàn)10-12

希爾排序(C語言實(shí)現(xiàn))09-06

PID算法的C語言實(shí)現(xiàn)07-19

鏈表的C語言實(shí)現(xiàn)方法08-27

如何實(shí)現(xiàn)C語言畫圖教程08-08

冒泡排序(C語言實(shí)現(xiàn))08-30

C語言常用庫函數(shù)實(shí)現(xiàn)10-09

C語言如何實(shí)現(xiàn)畫圖教程08-19