# Algorithms and Data Structures

## Tree Data Structure

The following articles describe various tree data structures. A tree is a hierarchical structure with a root node and its children, which in turn can have children of their own and thus form subtrees.

## Shortest Path Algorithms

Pathfinding or shortest path algorithms are used to find a path (or the shortest path) between two nodes within a graph.

## Algorithms

What you'll learn
• What is the difference between "shortest path" and "pathfinding"?
• Which pathfinding algorithms are there?
• How do the most important pathfinding algorithms work (explained step by step)?
• When do you use which algorithm?
• How to determine the time complexities of the pathfinding algorithms?
• How to implement pathfinding algorithms in Java?
• What are "negative cycles" and how are they identified?

## Algorithms and Data Structures in General

This category covers general articles about algorithms without any specific type of algorithm in mind, e.g., classifications of algorithms.

## Sorting Algorithms

If you need a refresher on how the most common sorting algorithms work and how they differ, this series is for you.

## Algorithms

What you'll learn
• What are the most common sorting methods?
• In which characteristics do they differ?
• How to sort arrays and collections in Java?
• How each sorting algorithm works (using lots of visualizations and examples).
• How to derive a sorting algorithm's time complexity, without complicated maths.
• How to implement each sorting algorithm in Java.

## Stack

In this tutorial series, you will learn everything about the abstract data type "stack", how to use it, and how to implement your own stack classes in Java.

## Queue

In this tutorial series, you will learn everything about the abstract data type "queue", which methods it provides, how to use queues, when to use which queue implementation and how to program your own queues in Java.

## Deque

In this tutorial series, you will learn everything about the abstract data type "deque", which methods it provides, how to use deques, when to use which deque implementation and how to program your own deques in Java.

## Data Structures in Java

What are data structures? A data structure is a collection of related data values and their relationships with each other. It provides operations to read or modify the data.

Java data structures are, for example, collections, maps, and sets, trees, queues, deques, and stacks.