Domine as estruturas de dados fundamentais e avançadas com implementações completas em Rust. Cada página inclui teoria, análise de complexidade, código idiomático e exemplos práticos.
Estruturas Lineares
Estruturas que organizam dados em sequência — a base de toda computação.
Array e Vec
Arrays de tamanho fixo e vetores dinâmicos. A estrutura mais fundamental do Rust.
Lista Ligada
Listas simplesmente e duplamente ligadas. Desafios com ownership e borrowing.
Pilha (Stack)
LIFO — Last In, First Out. Fundamental para parsers, undo/redo e backtracking.
Fila (Queue)
FIFO — First In, First Out. Essencial para BFS, task scheduling e buffers.
Deque
Fila de duas pontas com inserção/remoção O(1) em ambas extremidades.
Estruturas Baseadas em Árvores
Hierarquias e ordenação eficiente com estruturas de árvore.
Árvore Binária
A estrutura de árvore fundamental. Travessias in-order, pre-order e post-order.
Árvore Binária de Busca (BST)
Busca, inserção e remoção em O(log n). Base para árvores balanceadas.
Árvore AVL
BST auto-balanceada com rotações. Garante O(log n) no pior caso.
Árvore Rubro-Negra
A árvore balanceada usada por BTreeMap do Rust. Balanceamento com cores.
B-Tree
Árvore otimizada para disco e cache. Usada em BTreeMap/BTreeSet do Rust.
Heap Binário
Fila de prioridade com BinaryHeap. Min-heap e max-heap em Rust.
Trie (Árvore de Prefixos)
Busca por prefixo em O(k). Autocompletar, dicionários e roteamento IP.
Tabelas Hash e Conjuntos
Acesso em tempo constante com hashing.
HashMap
Tabela hash com Swiss Table (hashbrown). Acesso O(1) amortizado em Rust.
HashSet
Conjunto sem duplicatas baseado em hash. Operações de conjunto em Rust.
Bloom Filter
Estrutura probabilística para testes de pertinência. Zero falsos negativos.
Estruturas para Grafos
Representação e manipulação de grafos.
Grafo — Lista de Adjacência
Representação eficiente de grafos esparsos. A mais usada na prática.
Grafo — Matriz de Adjacência
Representação com matriz para grafos densos. Acesso O(1) a arestas.
Union-Find (Disjoint Set)
Conjuntos disjuntos com path compression e union by rank. Quase O(1).
Estruturas Avançadas
Estruturas especializadas para problemas específicos.
Segment Tree
Consultas e atualizações em intervalos em O(log n). Range queries eficientes.
Fenwick Tree (BIT)
Binary Indexed Tree para prefix sums. Mais simples que Segment Tree.
LRU Cache
Cache com evição Least Recently Used. HashMap + Lista duplamente ligada.
Skip List
Lista ligada com múltiplos níveis. Alternativa probabilística a árvores balanceadas.
Ring Buffer
Buffer circular de tamanho fixo. Ideal para streaming, logs e produtores/consumidores.
LFU Cache
Cache com evição Least Frequently Used. HashMap + buckets de frequência em O(1).
Arena Allocator
Alocação por região com bump allocation. Resolve structs auto-referenciais e grafos em Rust.
Arrays e Vec<T>: Estruturas Contíguas em Rust
Introdução
Arrays e vetores são as estruturas de dados mais fundamentais em qualquer linguagem de programação. Em Rust, temos duas formas principais de …
Leia maisListas Ligadas em Rust: Desafios e Implementações
Introdução
Listas ligadas são uma das estruturas de dados mais clássicas da ciência da computação. Em linguagens como C, Java ou Python, implementá-las é quase …
Leia maisPilha (Stack): Estrutura LIFO em Rust
Introdução
A pilha (stack) é uma das estruturas de dados mais fundamentais e intuitivas da ciência da computação. Ela segue o princípio LIFO — Last In, First …
Leia maisFila (Queue): Estrutura FIFO em Rust
Introdução
A fila (queue) é uma estrutura de dados que segue o princípio FIFO — First In, First Out (primeiro a entrar, primeiro a sair). Assim como uma fila de …
Leia maisDeque: Fila de Duas Pontas em Rust
Introdução
O Deque (pronuncia-se “deck”), abreviação de Double-Ended Queue (fila de duas pontas), é uma estrutura de dados que generaliza tanto a …
Leia maisÁrvore Binária
Introdução
A árvore binária é uma das estruturas de dados mais fundamentais da ciência da computação. Ela organiza elementos de forma hierárquica, onde cada nó …
Leia maisÁrvore de Busca Binária (BST)
Introdução
A Árvore de Busca Binária (Binary Search Tree ou BST) é uma árvore binária com uma propriedade fundamental: para cada nó, todos os valores na …
Leia maisÁrvore AVL
Introdução
A Árvore AVL (nomeada em homenagem a seus inventores Adelson-Velsky e Landis, 1962) é a primeira árvore de busca binária autobalanceada da história. …
Leia maisÁrvore Rubro-Negra (Red-Black Tree)
Introdução
A árvore rubro-negra (Red-Black Tree) é uma árvore de busca binária autobalanceada que utiliza um esquema de coloração — cada nó é marcado como …
Leia maisBTreeSet e BTreeMap: B-Tree em Rust | Rust Brasil
Introdução
A B-Tree (Árvore B) é uma árvore de busca generalizada onde cada nó pode conter múltiplas chaves e ter múltiplos filhos. Inventada por Rudolf Bayer e …
Leia maisHeap Binário
Introdução
O Heap Binário é uma árvore binária completa com uma propriedade especial de ordenação: em um max-heap, o valor de cada nó é maior ou igual aos …
Leia maisTrie (Árvore de Prefixos)
Introdução
A Trie (pronuncia-se “try”, do inglês “retrieval”) é uma estrutura de dados em árvore especializada em armazenar e buscar …
Leia maisHashMap em Rust: Tabela Hash com Swiss Table
O HashMap é uma das estruturas de dados mais utilizadas na programação. Ele permite associar chaves a valores com acesso em tempo constante amortizado O(1). Em …
Leia maisHashSet em Rust: Conjuntos e Operações de Conjunto
O HashSet é a implementação de um conjunto (set) em Rust, construído internamente sobre o HashMap<T, ()>. Ele armazena valores únicos e oferece operações …
Bloom Filter em Rust: Estrutura Probabilística
O Bloom Filter é uma estrutura de dados probabilística que responde de forma extremamente eficiente à pergunta: “Este elemento pertence ao …
Leia maisGrafo com Lista de Adjacência em Rust
O grafo é uma das estruturas de dados mais versáteis da computação. Ele modela relações entre entidades: redes sociais, mapas de rotas, dependências de pacotes, …
Leia maisGrafo com Matriz de Adjacência em Rust
A matriz de adjacência é uma representação de grafos usando um array bidimensional onde matriz[i][j] indica a existência (e possivelmente o peso) de uma aresta …
Union-Find (Disjoint Set) em Rust
O Union-Find, também chamado de Disjoint Set Union (DSU), é uma estrutura de dados que mantém uma coleção de conjuntos disjuntos (sem elementos em comum). Ela …
Leia maisSegment Tree em Rust: Consultas em Intervalos
A Segment Tree (Árvore de Segmentos) é uma estrutura de dados que permite realizar consultas e atualizações em intervalos de um array em tempo O(log n). Ela é …
Leia maisFenwick Tree (BIT) em Rust: Árvore Indexada Binária
A Fenwick Tree, também conhecida como Binary Indexed Tree (BIT), é uma estrutura de dados elegante que suporta consultas de soma de prefixo e atualizações …
Leia maisLRU Cache em Rust: Implementação Completa com HashMap e Lista Duplamente Ligada
Introdução
O LRU Cache (Least Recently Used Cache) é uma das estruturas de dados mais cobradas em entrevistas técnicas e uma das mais utilizadas em sistemas …
Leia maisSkip List em Rust: Lista com Múltiplos Níveis e Busca O(log n)
Introdução
A Skip List é uma estrutura de dados probabilística inventada por William Pugh em 1990. Ela oferece busca, inserção e remoção em O(log n) esperado — …
Leia maisRing Buffer (Buffer Circular) em Rust: Implementação Completa com Exemplos Práticos
Introdução
O Ring Buffer (buffer circular) é uma estrutura de dados de tamanho fixo que utiliza um único array contíguo como se fosse circular. Quando o final …
Leia maisLFU Cache em Rust: Implementação com Evição por Frequência em O(1)
Introdução
O LFU Cache (Least Frequently Used Cache) é uma política de evição que remove o item menos frequentemente acessado quando o cache atinge sua …
Leia maisArena Allocator em Rust: Alocação por Região, typed-arena e Grafos sem Dor
Introdução
O Arena Allocator (alocador por arena, ou alocação por região) é uma estratégia de gerenciamento de memória onde todas as alocações são feitas dentro …
Leia mais