ANA SAYFA
ARDUİNO
ANDROİD
C VE C++ ÖRNEKLERİ
GİRİLEN SAYIYA ASALLIK KONTROLÜ YAPDIRMA
GİRİLEN CÜMLEYİ TERS ÇEVİRME KODU
DOSYAYA YAZMA İŞLEMİ(Not Ortalaması)
AVL TREE KODU
İLKOKUL YÖNTEMİ ÇARPMA İŞLEMİ
ÜÇGEN ÇİZEN PROGRAM
CONSOL EKRANI RENKLENDİRME
STRUCT YAPISI VE DOSYA ÖRNEGİ
RECURSİVE FAKTÖRİYEL ALMA
CÜMLEDEKİ KELİME SAYISINI BULAN PROGRAM
İKİ BASAMAKLI SAYIYI METİN İLE YAZDIRMA
SAYI TAHMİN OYUNU
RANDUM ÖRNEK
BOOBLE SORT KODU
SELECTİON SORT KODU
BANKACILIK ÖRNEGİ
LZW KODU
KUCUK HARFİ BUYUK HARFE CEVİRME
EBOB
MATRİSDE ÇARPMA İŞLEMİ
JAVA
TELEFON İNCELEME
SOKET PROGRAMLAMA
FORUM
İLETİŞİM
VİDEOLAR
SMASH AND SAVE
AVL TREE KODU
#include
#include
#include
// An AVL tree node struct node { int key; struct node *left; struct node *right; int height; }; // A utility function to get maximum of two integers int max(int a, int b); // A utility function to get height of the tree int height(struct node *N) { if (N == NULL) return 0; return N->height; } // A utility function to get maximum of two integers int max(int a, int b) { return (a > b)? a : b; } /* Helper function that allocates a new node with the given key and NULL left and right pointers. */ struct node* newNode(int key) { struct node* node = (struct node*)malloc(sizeof(struct node)); node->key = key; node->left = NULL; node->right = NULL; node->height = 1; // new node is initially added at leaf return(node); } // A utility function to right rotate subtree rooted with y // See the diagram given above. struct node *rightRotate(struct node *y) { struct node *x = y->left; struct node *T2 = x->right; // Perform rotation x->right = y; y->left = T2; // Update heights y->height = max(height(y->left), height(y->right))+1; x->height = max(height(x->left), height(x->right))+1; // Return new root return x; } // A utility function to left rotate subtree rooted with x // See the diagram given above. struct node *leftRotate(struct node *x) { struct node *y = x->right; struct node *T2 = y->left; // Perform rotation y->left = x; x->right = T2; // Update heights x->height = max(height(x->left), height(x->right))+1; y->height = max(height(y->left), height(y->right))+1; // Return new root return y; } // Get Balance factor of node N int getBalance(struct node *N) { if (N == NULL) return 0; return height(N->left) - height(N->right); } struct node* insert(struct node* node, int key) { /* 1. Perform the normal BST rotation */ if (node == NULL) return(newNode(key)); if (key < node->key) node->left = insert(node->left, key); else node->right = insert(node->right, key); /* 2. Update height of this ancestor node */ node->height = max(height(node->left), height(node->right)) + 1; /* 3. Get the balance factor of this ancestor node to check whether this node became unbalanced */ int balance = getBalance(node); // If this node becomes unbalanced, then there are 4 cases // 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 the (unchanged) node pointer */ return node; } // A utility function to print preorder traversal of the tree. // The function also prints height of every node void preOrder(struct node *root) { if(root != NULL) { preOrder(root->left); printf("%d ", root->key); preOrder(root->right); } } /* Drier program to test above function*/ int main() { struct node *root = NULL; /* Constructing tree given in the above figure */ root = insert(root, 10); root = insert(root, 20); root = insert(root, 30); root = insert(root, 40); root = insert(root, 50); root = insert(root, 25); /* The constructed AVL Tree would be 30 / \ 20 40 / \ \ 10 25 50 */ printf("Pre order traversal of the constructed AVL tree is \n"); preOrder(root); getch(); return 0; }
Loading...
Enes Emre Peçenek
Sitemizin tüm hakları saklıdır.
Bu web sitesi ücretsiz olarak
Bedava-Sitem.com
ile oluşturulmuştur. Siz de kendi web sitenizi kurmak ister misiniz?
Ücretsiz kaydol