c++ average
// Average of a float
float avg(float numbers[]) {
int arraylength = sizeof(arr)/sizeof(arr[0]);
float sum = 0;
for (int i = 0; i < arraylength; i++) {
sum += numbers[i];
}
return sum / arraylength;
}
c++ average
// Average of a float
float avg(float numbers[]) {
int arraylength = sizeof(arr)/sizeof(arr[0]);
float sum = 0;
for (int i = 0; i < arraylength; i++) {
sum += numbers[i];
}
return sum / arraylength;
}
avl tree c++
#include <stdio.h>
#include "avltree.h"
/*
remove all nodes of an AVL tree
*/
void dispose(node* t)
{
if( t != NULL )
{
dispose( t->left );
dispose( t->right );
free( t );
}
}
/*
find a specific node's key in the tree
*/
node* find(int e, node* t )
{
if( t == NULL )
return NULL;
if( e < t->data )
return find( e, t->left );
else if( e > t->data )
return find( e, t->right );
else
return t;
}
/*
find minimum node's key
*/
node* find_min( node* t )
{
if( t == NULL )
return NULL;
else if( t->left == NULL )
return t;
else
return find_min( t->left );
}
/*
find maximum node's key
*/
node* find_max( node* t )
{
if( t != NULL )
while( t->right != NULL )
t = t->right;
return t;
}
/*
get the height of a node
*/
static int height( node* n )
{
if( n == NULL )
return -1;
else
return n->height;
}
/*
get maximum value of two integers
*/
static int max( int l, int r)
{
return l > r ? l: r;
}
/*
perform a rotation between a k2 node and its left child
note: call single_rotate_with_left only if k2 node has a left child
*/
static node* single_rotate_with_left( node* k2 )
{
node* k1 = NULL;
k1 = k2->left;
k2->left = k1->right;
k1->right = k2;
k2->height = max( height( k2->left ), height( k2->right ) ) + 1;
k1->height = max( height( k1->left ), k2->height ) + 1;
return k1; /* new root */
}
/*
perform a rotation between a node (k1) and its right child
note: call single_rotate_with_right only if
the k1 node has a right child
*/
static node* single_rotate_with_right( node* k1 )
{
node* k2;
k2 = k1->right;
k1->right = k2->left;
k2->left = k1;
k1->height = max( height( k1->left ), height( k1->right ) ) + 1;
k2->height = max( height( k2->right ), k1->height ) + 1;
return k2; /* New root */
}
/*
perform the left-right double rotation,
note: call double_rotate_with_left only if k3 node has
a left child and k3's left child has a right child
*/
static node* double_rotate_with_left( node* k3 )
{
/* Rotate between k1 and k2 */
k3->left = single_rotate_with_right( k3->left );
/* Rotate between K3 and k2 */
return single_rotate_with_left( k3 );
}
/*
perform the right-left double rotation
notes: call double_rotate_with_right only if k1 has a
right child and k1's right child has a left child
*/
static node* double_rotate_with_right( node* k1 )
{
/* rotate between K3 and k2 */
k1->right = single_rotate_with_left( k1->right );
/* rotate between k1 and k2 */
return single_rotate_with_right( k1 );
}
/*
insert a new node into the tree
*/
node* insert(int e, node* t )
{
if( t == NULL )
{
/* Create and return a one-node tree */
t = (node*)malloc(sizeof(node));
if( t == NULL )
{
fprintf (stderr, "Out of memory!!! (insert)\n");
exit(1);
}
else
{
t->data = e;
t->height = 0;
t->left = t->right = NULL;
}
}
else if( e < t->data )
{
t->left = insert( e, t->left );
if( height( t->left ) - height( t->right ) == 2 )
if( e < t->left->data )
t = single_rotate_with_left( t );
else
t = double_rotate_with_left( t );
}
else if( e > t->data )
{
t->right = insert( e, t->right );
if( height( t->right ) - height( t->left ) == 2 )
if( e > t->right->data )
t = single_rotate_with_right( t );
else
t = double_rotate_with_right( t );
}
/* Else X is in the tree already; we'll do nothing */
t->height = max( height( t->left ), height( t->right ) ) + 1;
return t;
}
/*
remove a node in the tree
*/
node* delete( int e, node* t )
{
printf( "Sorry; Delete is unimplemented; %d remains\n", e );
return t;
}
/*
data data of a node
*/
int get(node* n)
{
return n->data;
}
/*
Recursively display AVL tree or subtree
*/
void display_avl(node* t)
{
if (t == NULL)
return;
printf("%d",t->data);
if(t->left != NULL)
printf("(L:%d)",t->left->data);
if(t->right != NULL)
printf("(R:%d)",t->right->data);
printf("\n");
display_avl(t->left);
display_avl(t->right);
}
Code language: C++ (cpp)
Copyright © 2021 Codeinu
Forgot your account's password or having trouble logging into your Account? Don't worry, we'll help you to get back your account. Enter your email address and we'll send you a recovery link to reset your password. If you are experiencing problems resetting your password contact us