RESIDENT EVIL 6

Game ini Menceritakan Tentang Petualangan Aksi Tembak Yang Sanagat Seru, yang Membuat Game Ini Hidup Adalah Tokoh Wanita ADA SHERRY dan HELANA yang Terlihat Cantik di Game Ini

RESIDENT EVIL Revelation 2

Melanjutkan kesuksesan versi sebelumnya RE Revelation 2 ini lebih menegangkan, coba aja

TOMB RAIDER 2013 PLAY NOW

Tomb Raider Menceritakan Tentang Petualangan Seorag Gadis Pemberani Yang Menyusuri Hutan

Rise of the TOMB RAIDER

Tomb Raider Menceritakan Tentang Petualangan Seorag Gadis Pemberani Yang Menyusuri Hutan

NARUTO Ninja Storm Revolution

Setelah Mengalahkan Kabuto Naruto Hihadapkan Dengan Pertempuran Melawan Obito dan Madara, Ayo Jadilah Naruto

NARUTO Ninja Storm 4

Setelah berhasil mengalahkan madara dan obito naruto dan sasuke harus berjuang musuh yg lebih kuat lagi apakan itu...

BEETLEFIELD 4

Tembak Musuh Dengan Senjata yang Kau Suka dan Lewati Rintanagn yang Ada

CALL OF DUTY black ops 3

Nikmati Sensasi Perang Di Amerika yang Sangat Menyenangkan

Tom Clancy's The Division

Nikmati Sensasi Perang Di Amerika yang Sangat Menyenangkan

NEED FOR SPEED RIVAL

Mampukah Kamu Menjadi Pembalad Liar atau Menjadi Polisi

PES 2016

Game gengan grafic sangat mengesankan, Gerakan pamain dibuat seerti nyata

FIFA 2016

Game gengan grafic sangat mengesankan, Gerakan pamain dibuat seerti nyata

Rabu, 23 November 2016

AVL Tree c++

#include <cstdlib>
#include <iostream>

using namespace std;
#include<stdio.h>
#include<stdlib.h>

// 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);
}

// Recursive function to insert key in subtree rooted
// with node and returns new root of subtree.
struct Node* insert(struct Node* node, int key)
{
    /* 1.  Perform the normal BST insertion */
    if (node == NULL)
        return(newNode(key));

    if (key < node->key)
        node->left  = insert(node->left, key);
    else if (key > node->key)
        node->right = insert(node->right, key);
    else // Equal keys are not allowed in BST
        return node;

    /* 2. Update height of this ancestor node */
    node->height = 1 + max(height(node->left),
                           height(node->right));

    /* 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)
    {
        printf("%d ", root->key);
        preOrder(root->left);
        preOrder(root->right);
    }
}

/* Drier program to test above function*/
int main(int argc, char *argv[])
{
    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);  //replace as number desideratum

  /* The constructed AVL Tree would be
            30
           /  \
         20   40
        /  \     \
       10  25    50
  */

  printf("Preorder traversal of the constructed AVL"
         " tree is \n");
  preOrder(root);
    system("PAUSE");
    return EXIT_SUCCESS;
}