AVL樹的c語言實現(xiàn)
導(dǎo)語:C語言的設(shè)計目標(biāo)是提供一種能以簡易的方式編譯、處理低級存儲器、產(chǎn)生少量的機器碼以及不需要任何運行環(huán)境支持便能運行的編程語言。下面我們來看看AVL樹的c語言實現(xiàn),希望對大家有所幫助。
AVL樹的c語言實現(xiàn):在計算機科學(xué)中,AVL樹是最先發(fā)明的自平衡二叉查找樹。在AVL樹中任何節(jié)點的兩個子樹的高度最大差別為一,所以它也被稱為高度平衡樹。查找、插入和刪除在平均和最壞情況下都是O(log n)。增加和刪除可能需要通過一次或多次樹旋轉(zhuǎn)來重新平衡這個樹。
1.節(jié)點
(1)節(jié)點的定義
1 2 3 4 5 6 7 8 9 | typedef int KeyType; typedef struct AvlNode { KeyType key; /pic/code> AvlNode *leftchild; /pic/code> AvlNode *rightchild; /pic/code> AvlNode *parent; /pic/code> int balance; /pic/code> }AvlNode,*AvlTree; |
(2)結(jié)點的創(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樹中進行插入或刪除節(jié)點后,可能導(dǎo)致AVL樹失去平衡。這種失去平衡的可以概括為4種姿態(tài):左單旋轉(zhuǎn),右單旋轉(zhuǎn),左平衡,右平衡。(1)左單旋轉(zhuǎn):也叫左左旋轉(zhuǎn)。
【AVL樹的c語言實現(xiàn)】相關(guān)文章:
C語言程序的實現(xiàn)12-06
PID算法的C語言實現(xiàn)02-24
如何實現(xiàn)C語言畫圖教程10-03
C語言如何實現(xiàn)畫圖教程10-14
鏈表的C語言實現(xiàn)方法12-10
希爾排序(C語言實現(xiàn))01-26
冒泡排序(C語言實現(xiàn))12-01