|
Algorithms_in_C++
1.0.0
Set of algorithms implemented in C++.
|
A simple tree implementation using nodes.
More...
#include <algorithm>
#include <iostream>
#include <queue>
A simple tree implementation using nodes.
- Todo:
- update code to use C++ STL library features and OO structure
- Warning
- This program is a poor implementation and does not utilize any of the C++ STL features.
◆ createNode()
| node* createNode |
( |
int |
data | ) |
|
Create and return a new Node
◆ deleteNode()
| node* deleteNode |
( |
node * |
root, |
|
|
int |
key |
|
) |
| |
Balanced Deletion
93 else if (key > root->
data)
99 node *temp = root->left;
103 }
else if (!root->left) {
104 node *temp = root->right;
111 root->
data = temp->data;
112 root->right =
deleteNode(root->right, temp->data);
◆ getBalance()
| int getBalance |
( |
node * |
root | ) |
|
Returns difference between height of left and right subtree
◆ height()
| int height |
( |
node * |
root | ) |
|
◆ insert()
Balanced Insertion
70 if (item < root->
data)
71 root->left =
insert(root->left, item);
73 root->right =
insert(root->right, item);
◆ leftRotate()
Returns Node after Left Rotation
51 node *t = root->right;
◆ levelOrder()
| void levelOrder |
( |
node * |
root | ) |
|
LevelOrder (Breadth First Search)
◆ main()
Main function
138 for (i = 1; i <= 7; i++) root =
insert(root, i);
◆ minValue()
Returns node with minimum value in the tree
60 if (root->left == NULL)
◆ rightRotate()
Returns Node after Right Rotation
void mov(tower *From, tower *To)
Definition: tower_of_hanoi.cpp:39
int main()
Definition: knuth_morris_pratt.cpp:76
int main()
Definition: fenwick_tree.cpp:69
void ternary_search(int N, int A[], int target)
Definition: ternary_search.cpp:127
void test3()
Definition: smallest_circle.cpp:188
int main(void)
Definition: decimal_to_hexadecimal.cpp:11
void method2(int number)
Definition: decimal_to_binary.cpp:27
int main()
Definition: exponential_search.cpp:74
int main()
Definition: stairs_pattern.cpp:17
int hash_search(int key, int *counter)
Definition: hash_search.cpp:76
void shell_sort(T *arr, size_t LEN)
Definition: shell_sort2.cpp:45
std::string tolowerRoman(int n)
Definition: decimal_to_roman_numeral.cpp:24
void test_f(const int NUM_DATA)
Definition: shell_sort2.cpp:145
String search algorithms.
Definition: brute_force_string_searching.cpp:13
void show_data(T *arr, size_t LEN)
Definition: shell_sort2.cpp:18
uint64_t f[MAX]
Definition: fibonacci_fast.cpp:27
void heapSort(T *arr, int n)
Definition: heap_sort.cpp:84
int main()
Definition: binomial_dist.cpp:84
double addition_rule_dependent(double A, double B, double B_given_A)
Definition: addition_rule.cpp:25
void test2()
Definition: smallest_circle.cpp:173
node * deleteNode(node *root, int key)
Definition: avltree.cpp:88
double x
Definition: smallest_circle.cpp:16
int main()
Definition: decimal_to_roman_numeral.cpp:90
int sum_range(int l, int r)
Definition: fenwick_tree.cpp:65
void test()
Definition: heap_sort.cpp:99
#define absolutePrecision
Definition: ternary_search.cpp:22
ll ans(ll n)
Definition: matrix_exponentiation.cpp:94
Definition: fenwick_tree.cpp:17
void print(uint32_t N)
Definition: sieve_of_eratosthenes.cpp:40
#define HASHMAX
Determines the length of the hash table.
Definition: hash_search.cpp:22
#define PRIME
Prime modulus for hash functions.
Definition: rabin_karp.cpp:16
int partition(int arr[], int low, int high)
Definition: quick_sort.cpp:37
Type * binary_s(Type *array, size_t size, Type key)
Definition: exponential_search.cpp:34
Definition: avltree.cpp:13
double y
Definition: smallest_circle.cpp:17
#define MAX
Determines how much data.
Definition: hash_search.cpp:21
int main()
Definition: pascal_triangle.cpp:52
int main()
Definition: bayes_theorem.cpp:26
vector< vector< ll > > multiply(const vector< vector< ll >> &A, const vector< vector< ll >> &B)
Definition: matrix_exponentiation.cpp:60
int main(void)
Definition: qr_decomposition.cpp:23
int main()
Definition: palindrome_of_number.cpp:19
Sorting algorithms.
Definition: non_recursive_merge_sort.cpp:11
void levelOrder(node *root)
Definition: avltree.cpp:119
int main()
Definition: vector_important_functions.cpp:11
void merge(Iterator, Iterator, const Iterator, char[])
merges 2 sorted adjacent segments into a larger sorted segment
Definition: non_recursive_merge_sort.cpp:57
int main()
Definition: linear_search.cpp:27
static float eqd(float y)
Definition: successive_approximation.cpp:17
std::string fill(char c, int n)
Definition: decimal_to_roman_numeral.cpp:15
void mat_mul(const std::valarray< std::valarray< double >> &A, const std::valarray< std::valarray< double >> &B, std::valarray< std::valarray< double >> *OUT)
Definition: qr_eigen_values.cpp:54
int64_t create_hash(const std::string &s, int n)
Definition: rabin_karp.cpp:25
int main(int argc, char *argv[])
Definition: shell_sort2.cpp:183
int main()
Definition: interpolation_search2.cpp:32
int compare(const void *a, const void *b)
Definition: shell_sort2.cpp:87
int brute_force(const std::string &text, const std::string &pattern)
Definition: brute_force_string_searching.cpp:21
int main()
Definition: buzz_number.cpp:9
Functions to compute QR decomposition of any rectangular matrix.
int offset(int x)
Definition: fenwick_tree.cpp:22
void create_matrix(std::valarray< std::valarray< double >> *A)
Definition: qr_eigen_values.cpp:28
int main()
Definition: happy_number.cpp:29
int main()
Definition: text_search.cpp:15
void show(int *arr, int size)
Definition: merge_sort.cpp:96
const std::vector< std::vector< std::string > > test_set
Definition: brute_force_string_searching.cpp:41
int rec_ternary_search(int left, int right, int A[], int target)
Definition: ternary_search.cpp:90
Definition: linkedlist_implentation_usingarray.cpp:14
int y
Point respect to x coordinate.
Definition: line_segment_intersection.cpp:14
std::valarray< double > eigen_values(std::valarray< std::valarray< double >> *A, bool print_intermediates=false)
Definition: qr_eigen_values.cpp:98
int64_t recalculate_hash(const std::string &s, int old_index, int new_index, int64_t old_hash, int patLength)
Definition: rabin_karp.cpp:42
int main()
Definition: smallest_circle.cpp:198
int top
pointer to track stack index
Definition: paranthesis_matching.cpp:23
void test_int(const int NUM_DATA)
Definition: shell_sort2.cpp:105
node * createNode(int data)
Definition: avltree.cpp:21
int ** pascal_triangle(int **arr, int n)
Definition: pascal_triangle.cpp:36
node * insert(node *root, int item)
Definition: avltree.cpp:66
FenwickTree(const std::vector< int > &arr)
Definition: fenwick_tree.cpp:28
void mergeSort(int *arr, int l, int r)
Definition: merge_sort.cpp:83
int main()
Definition: matrix_exponentiation.cpp:129
Library functions to compute QR decomposition of a given matrix.
void merge(int *arr, int l, int m, int r)
Definition: merge_sort.cpp:33
int h(int key)
Definition: hash_search.cpp:45
void non_recursive_merge_sort(const Iterator first, const Iterator last)
bottom-up merge sort which sorts elements in a non-decreasing order
Definition: non_recursive_merge_sort.cpp:86
void update(int id, int val)
Definition: fenwick_tree.cpp:45
int main(int argc, char const *argv[])
Definition: binary_search.cpp:31
ll k
Definition: matrix_exponentiation.cpp:48
Definition: tower_of_hanoi.cpp:11
#define _target
Definition: ternary_search.cpp:27
int binary_search(int a[], int r, int key)
Definition: binary_search.cpp:15
char opening(char ch)
Definition: paranthesis_matching.cpp:36
bool is_happy(T n)
Definition: happy_number.cpp:14
bool check_if_equal(const std::string &str1, const std::string &str2, int start1, int end1, int start2, int end2)
Definition: rabin_karp.cpp:60
int main()
Definition: ternary_search.cpp:134
double binomial_range_successes(double n, double p, double lower_bound, double upper_bound)
Definition: binomial_dist.cpp:74
double LenghtLine(const Point &A, const Point &B)
Definition: smallest_circle.cpp:37
bool kmp(const std::string &pattern, const std::string &text)
Definition: knuth_morris_pratt.cpp:56
double poisson_range_successes(double expected, double lower, double upper)
Definition: poisson_dist.cpp:54
int main()
Definition: tower_of_hanoi.cpp:65
void non_recursive_merge_sort(const Iterator first, const Iterator last, const size_t n)
bottom-up merge sort which sorts elements in a non-decreasing order
Definition: non_recursive_merge_sort.cpp:25
#define ll
Definition: matrix_exponentiation.cpp:33
double binomial_standard_deviation(double n, double p)
Definition: binomial_dist.cpp:36
int height(node *root)
Definition: avltree.cpp:31
double TriangleArea(const Point &A, const Point &B, const Point &C)
Definition: smallest_circle.cpp:54
int main()
Definition: brute_force_string_searching.cpp:47
node * rightRotate(node *root)
Definition: avltree.cpp:41
double binomial_x_successes(double n, double p, double x)
Definition: binomial_dist.cpp:65
void test2()
Definition: qr_eigen_values.cpp:210
#define endl
Definition: matrix_exponentiation.cpp:36
struct list * link
pointer to nodes
void spiralPrint(int **a, int r, int c)
Definition: spiral_print.cpp:29
double bayes_BgivenA(double AgivenB, double A, double B)
Definition: bayes_theorem.cpp:20
double poisson_rate(double events, double timeframe)
Definition: poisson_dist.cpp:17
int key
key value for node
Definition: hash_search.cpp:30
int main(int argc, char **argv)
Definition: qr_eigen_values.cpp:243
double circle(const std::vector< Point > &P)
Definition: smallest_circle.cpp:87
static float eq(float y)
Definition: successive_approximation.cpp:12
Type * struzik_search(Type *array, size_t size, Type key)
Definition: exponential_search.cpp:59
int main()
Definition: poisson_dist.cpp:65
vector< ll > a
Definition: matrix_exponentiation.cpp:53
double binomial_expected(double n, double p)
Definition: binomial_dist.cpp:22
int main()
Definition: heap_sort.cpp:120
node hashtab[HASHMAX]
array of nodes
Definition: hash_search.cpp:35
int it_ternary_search(int left, int right, int A[], int target)
Definition: ternary_search.cpp:48
int jumpSearch(int arr[], int x, int n)
Definition: jump_search.cpp:12
int data[MAX]
test data
Definition: hash_search.cpp:24
void method1(int number)
Definition: decimal_to_binary.cpp:11
void test1()
Definition: qr_eigen_values.cpp:177
node * minValue(node *root)
Definition: avltree.cpp:59
void printArray(T *arr, int sz)
Definition: heap_sort.cpp:37
int main()
Definition: hash_search.cpp:99
void create_list(int key)
Definition: hash_search.cpp:55
double fact(double x)
Definition: poisson_dist.cpp:30
double addition_rule_independent(double A, double B)
Definition: addition_rule.cpp:14
void show(const struct tower *const F, const struct tower *const T, const struct tower *const U)
Definition: tower_of_hanoi.cpp:19
int main()
Definition: sparse_matrix.cpp:9
void test()
Definition: smallest_circle.cpp:158
Definition: huffman.cpp:28
int main()
Definition: spiral_print.cpp:69
int main()
Definition: avltree.cpp:134
#define MAX
Definition: paranthesis_matching.cpp:16
vector< vector< ll > > power(const vector< vector< ll >> &A, ll p)
Definition: matrix_exponentiation.cpp:79
int main()
Definition: successive_approximation.cpp:20
int LinearSearch(int *array, int size, int key)
Definition: linear_search.cpp:16
const uint64_t MAX
Definition: fibonacci_fast.cpp:24
bool IsPrime(int number)
Definition: primality_test.cpp:18
double nCr(double n, double r)
Definition: binomial_dist.cpp:47
int values[10]
Values in the tower.
Definition: tower_of_hanoi.cpp:13
void qr_decompose(const std::valarray< std::valarray< T >> &A, std::valarray< std::valarray< T >> *Q, std::valarray< std::valarray< T >> *R)
Definition: qr_decompose.h:146
void genArray(int **a, int r, int c)
Definition: spiral_print.cpp:12
int main()
Definition: interpolation_search.cpp:37
std::string add(std::string a, std::string b)
Definition: string_fibonacci.cpp:24
int main()
Definition: addition_rule.cpp:30
std::string toupperRoman(int n)
Definition: decimal_to_roman_numeral.cpp:58
#define LIMS
Definition: qr_eigen_values.cpp:20
double bayes_AgivenB(double BgivenA, double A, double B)
Definition: bayes_theorem.cpp:14
int sum(int id)
Definition: fenwick_tree.cpp:54
int main()
Definition: quick_sort.cpp:82
FenwickTree(int x)
Definition: fenwick_tree.cpp:39
Point(double a=0.f, double b=0.f)
Definition: smallest_circle.cpp:23
int main()
Definition: primality_test.cpp:31
node * leftRotate(node *root)
Definition: avltree.cpp:50
struct list * next
pointer to next link in the chain
Definition: hash_search.cpp:31
int top
top tower ID
Definition: tower_of_hanoi.cpp:15
Definition: line_segment_intersection.cpp:12
void TH(int n, tower *From, tower *Using, tower *To)
Definition: tower_of_hanoi.cpp:52
int interpolation_search(int arr[], int value, int len)
Definition: interpolation_search.cpp:15
void push(char ch)
push byte to stack variable
Definition: paranthesis_matching.cpp:26
int main()
Definition: merge_sort.cpp:102
char pop()
pop a byte out of stack variable
Definition: paranthesis_matching.cpp:29
int InterpolationSearch(int A[], int n, int x)
Definition: interpolation_search2.cpp:15
double poisson_expected(double rate, double time)
Definition: poisson_dist.cpp:25
double poisson_x_successes(double expected, double x)
Definition: poisson_dist.cpp:46
int main(void)
Definition: rabin_karp.cpp:105
void quickSort(int arr[], int low, int high)
Definition: quick_sort.cpp:63
std::vector< int > getFailureArray(const std::string &pattern)
Definition: knuth_morris_pratt.cpp:33
void show_pascal(int **arr, int n)
Definition: pascal_triangle.cpp:18
int rabin_karp(const std::string &str, const std::string &pat)
Definition: rabin_karp.cpp:83
void get_input()
Definition: ternary_search.cpp:36
bool PointInCircle(const std::vector< Point > &P, const Point &Center, double R)
Definition: smallest_circle.cpp:72
Definition: list_array.cpp:8
int getBalance(node *root)
Definition: avltree.cpp:38
double binomial_variance(double n, double p)
Definition: binomial_dist.cpp:29
ll ab(ll x)
Definition: matrix_exponentiation.cpp:43
void shell_sort(std::vector< T > *arr)
Definition: shell_sort2.cpp:75