Algorithms And Data Structures

Basic Algorithms and Data Structures: AVL tree, Binary Search Trees, Arrays, B trees, Linked Lists, Stacks and HashMaps

Last updated 2022-01-10 | 4.6

- grasp the fundamentals of algorithms and data structures
- detect non-optimal code snippets
- learn about arrays and linked lists

What you'll learn

grasp the fundamentals of algorithms and data structures
detect non-optimal code snippets
learn about arrays and linked lists
learn about stacks and queues
learn about binary search trees
learn about balanced binary search trees such as AVL trees or red-black trees
learn about priority queues and heaps
learn about B-trees and external memory
learn about hashing and hash tables

* Requirements

* Basic Java (loops and some OOP)

Description

This course is about data structures and algorithms. We are going to implement the problems in Java. The course takes approximately 14 hours to complete. It is highly recommended to type out these data structures several times on your own in order to get a good grasp of it. 

Section 1:

  • data structures and abstract data types

Section 2 - Arrays

  • what are arrays

  • what is random access and how to indexes

Section 3 - Linked Lists

  • linked lists and doubly linked lists

  • linked list related interview questions

Section 2 - Stacks and Queues:

  • what are stacks and queues

  • heap memory and stack memory

  • visualizing stack memory

Section 3 - Binary Search Trees (BSTs):

  • what are tree data structures?

  • how to achieve O(logN) logarithmic running time?

  • binary search trees

Section 4 - AVL Trees

  • what is the problem with binary search trees?

  • balanced search trees: AVL trees

  • rotations

Section 5 - Red-Black Trees

  • what are red-black trees?

  • what is recovering operation?

  • comparing AVL trees and red-black trees

Section 6 - Splay Trees

  • splay trees and caches

  • achieve O(1) running time for getting the recently visited item

Section 7 - Heaps and Priority Queues

  • what are priority queues?

  • what is heap data structure?

  • how to do sorting in O(NlogN) with heaps?

Section 8 - B-Trees

  • external memory and the main memory (RAM)

  • B-trees and their applications in memory

  • B* trees and B+ trees

Section 9 - Hashing and HashMaps:

  • what are hashing and hashtables (hashmaps)

  • what are hash-functions

  • how to achieve O(1) running time complexity

Section 10 (BONUS):

  • what is LRU cache

  • LRU cache implementation

Section 11 (BONUS):

  • Fenwick trees (binary indexed trees)

  • binary indexed tree implementation

In each chapter you will learn about the theoretical background of each algorithm or data structure, then we are going to write the code on a step by step basis in Eclipse, Java.

Most of the advanced algorithms relies heavily on these topics so it is definitely worth understanding the basics. These principles can be used in several fields: in investment banking, artificial intelligence or electronic trading algorithms on the stock market.

Thanks for joining the course, let's get started!

Who this course is for:

  • This course is meant for everyone from scientists to software developers who want to get closer to algorithmic thinking in the main

Course content

26 sections • 176 lectures

Why to use data structures Preview 04:49

Data structures and abstract data types Preview 03:33

Installing Java and Eclipse on Windows Preview 00:33

Installing Java and Eclipse on Mac Preview 00:12

What are array data structures? Preview 08:04

Arrays introduction - operations Preview 06:48

Implementing arrays Preview 06:22

ArraysLists in Java Preview 07:54

Arrays Quiz

Reversing an array in-place overview Preview 00:11

Reversing an array in-place solution Preview 05:52

Anagram problem overview Preview 00:12

Anagram problem solution Preview 05:55

Palindrome problem overview Preview 00:08

Palindrome problem solution Preview 04:35

Integer reversion problem overview Preview 00:10

Integer reversion problem solution Preview 08:25

Dutch national flag problem overview Preview 00:10

Dutch national flag problem theory Preview 08:03

Dutch national flag problem solution Preview 06:19

Trapping rain water problem overview Preview 00:14

Trapping rain water problem theory Preview 13:34

Trapping rain water problem solution Preview 07:58

What are linked lists? Preview 04:53

Linked list theory - operations Preview 11:03

Linked list implementation I Preview 04:46

Linked list implementation II Preview 07:35

Linked list implementation III Preview 09:30

Linked list implementation IV Preview 04:43

Comparing linked lists and arrays Preview 06:26

Practical (real-world) applications of linked lists Preview 05:17

Linked Lists Quiz

What are doubly linked lists? Preview 06:59

Doubly linked list implementation Preview 08:02

LinkedLists in Java Preview 04:46

Running time comparison: linked lists and arrays Preview 02:47

Doubly Linked Lists Quiz

Finding the middle node in a linked list overview Preview 00:05

Finding the middle node in a linked list solution Preview 05:25

Reverse a linked list in-place overview Preview 00:07

Reverse a linked list in-place solution Preview 07:33

What are stacks? Preview 04:35

Stacks in memory management (stacks and heaps ) Preview 03:36

Stack memory visualization Preview 06:18

Stack implementation with linked list Preview 10:43

Stack implementation with arrays Preview 15:11

Dijkstra's interpreter introduction Preview 05:00

Dijkstra's interpreter implementation Preview 09:12

Stacks in Java Preview 04:05

Practical (real-world) applications of stacks Preview 03:20

Stacks Quiz

What are queues? Preview 04:15

Queue implementation with linked list Preview 09:43

Queues in Java Preview 06:10

Queues Quiz

Max in a stack problem overview Preview 00:09

Max in a stack problem solution Preview 05:49

Stack with queue overview Preview 00:04

Stack with queue solution Preview 05:49

Stack with queue solution - recursion Preview 04:53

Binary search trees theory - basics Preview 14:38

Binary search trees theory - search, insert Preview 07:55

Binary search trees theory - delete Preview 06:12

Binary search trees theory - in-order traversal Preview 05:28

Binary search trees theory - running times Preview 04:35

Binary search trees implementation I - Node and Tree classes Preview 06:30

Binary search trees implementation II - insertion Preview 09:31

Binary search tree implementation III - max, min and traversal Preview 09:41

Stack memory visualization - finding max (min) items Preview 04:40

Stack memory visualization - tree traversal Preview 06:00

Binary search tree implementation IV - remove Preview 15:56

Binary search tree implementation V - testing Preview 06:34

Practical (real-world) applications of trees Preview 03:06

Binary Search Trees Quiz

Compare binary trees overview Preview 00:08

Compare binary trees solution Preview 05:15

Compare binary trees minor update Preview 00:23

k-th smallest element in a search tree overview Preview 00:04

k-th smallest element in a search tree solution Preview 11:30

Family age problem overview Preview 00:15

Family age problem solution Preview 09:47

Motivation behind balanced binary search trees Preview 03:26

What are AVL trees? Preview 06:47

AVL trees introduction - height Preview 12:38

AVL trees introduction - rotations Preview 09:05

AVL trees introduction - illustration Preview 05:17

AVL tree implementation I Preview 05:02

AVL tree implementation II Preview 09:52

AVL tree implementation III Preview 11:43

AVL tree implementation IV Preview 09:52

AVL tree implementation V Preview 04:35

Practical (real-world) applications of balanced binary search trees Preview 03:40

AVL Trees Quiz

What are red-black trees? Preview 10:48

The logic behind red-black trees Preview 05:24

Red-black trees - recoloring and rotation cases Preview 09:25

Red-black trees visualizations Preview 07:33

Red-black tree implementation I Preview 05:01

Red-black tree implementation II Preview 03:09

Red-black tree implementation III Preview 02:26

Red-black tree implementation IV Preview 13:51

Red-black tree implementation V Preview 05:04

Differences between red-black tree and AVL trees Preview 02:46

Red-Black Trees Quiz

What are splay trees? Preview 12:26

Splay tree introduction - example Preview 03:25

Splay tree implementation I Preview 10:21

Splay tree implementation II Preview 09:54

Splay tree implementation III Preview 04:06

Splay trees application Preview 02:56

Splay Trees Quiz

What are priority queues? Preview 04:31

Heap introduction - basics Preview 10:14

Heap introduction - array representation Preview 09:36

Heap introduction - remove operation Preview 07:12

Using heap data structure to sort (heapsort) Preview 06:25

Heap introduction - running times Preview 05:05

Binomial and Fibonacci heaps Preview 04:17

Heap implementation I Preview 11:30

Heap implementation II Preview 09:37

Heap implementation III Preview 04:10

Heaps in java.util.PriorityQueue Preview 10:09

Heaps Quiz

Checking array heap representation overview Preview 00:08

Checking array heap representation solution Preview 07:05

Converting max heap to min heap overview Preview 00:04

Converting max heap to min heap solution Preview 06:41

What is external memory? Preview 08:30

Disk access times Preview 04:25

What are B-trees? Preview 08:17

B-tree introduction - insertion Preview 10:42

B-tree introduction - deletion Preview 06:25






B-tree variants and file systems Preview 05:02

B-Trees Quiz

What are associative arrays? Preview 05:51

Hashtables introduction - basics Preview 11:25

Hashtables introduction - collisions Preview 11:19

Hashtables introduction - load factor & dynamic resizing Preview 07:08

----------- Chaining ----------- Preview 00:00

Chaining method summary Preview 04:05

Chaining implementation I - put Preview 09:16

Chaining implementation II - get Preview 04:27

Chaining implementation III - testing Preview 08:00

-------- Linear Probing -------- Preview 00:00

Linear probing summary Preview 03:59

Linear probing implementation I - put Preview 05:32

Linear probing implementation II - get Preview 02:57

Linear probing implementation III - testing Preview 04:44

------- Generic Linear Probing --------- Preview 00:03

Generic linear probing implementation I - basics Preview 06:44

Generic linear probing implementation II - get Preview 04:14

Generic linear probing implementation III - put Preview 05:35

Generic linear probing implementation IV - remove Preview 06:26

Generic linear probing implementation V - resize Preview 05:30

Generic linear probing implementation VI - testing Preview 02:39

Generic linear probing implementation - hashCode Preview 02:05

Maps in Java Collections Preview 05:52

Practical (real-world) applications of hashing Preview 06:31

Hashtables Quiz

Two sum problem overview Preview 00:07

Two sum problem solution Preview 07:29

Why to use cache? Preview 03:26

LRU cache introduction Preview 08:06

LRU cache implementation I Preview 04:22

LRU cache implementation II Preview 11:18

What are Fenwick trees? Preview 11:57

Fenwick trees introduction - tree structure Preview 04:42

Fenwick trees introduction - update Preview 08:02

Fenwick trees implementation Preview 05:10

Algorhyme Visualization App Preview 00:41

Check out Algorhyme for FREE: https://play.google.com/store/apps/details?id=com.globalsoftwaresupport.algorithmsapp&hl=en

Algorhyme - Algorithms and Data Structures Preview 00:53