Buscar pacotes, repositórios e categorias de apps

Detalhes do pacotev1.0.7

binary_tree

Árvore Binária de Busca Autoequilibrada para Dart. A BST é implementada como Iterable. Existem muitas operações, como greaterThen, lessThenOrEqual (criar sublista), max, min, etc.

AndroidiOSWebmacOSWindowsLinux
Downloads em 30 dias
95
Curtidas
28
Pontos Pub
150

Instalar pacote

flutter pub add binary_tree

Visão geral do pacote

Orientação gerada a partir de informações públicas. Apenas para referência.

Uma implementação de árvore binária de busca auto-equilibrada em Dart, projetada para manter operações eficientes de pesquisa, inserção e exclusão com complexidade O(log n). A árvore suporta iteração por meio de Iterable e fornece métodos poderosos como greaterThan, lessThanOrEqual (para criação de sub-listas), max e min. Ideal para conjuntos de dados dinâmicos que exigem acesso ordenado e consultas por intervalo. Criada com foco em desempenho e usabilidade, é adequada para aplicações que precisam de gerenciamento rápido de dados ordenados em múltiplas plataformas.

Casos de uso

  • Gerenciando dados ordenados dinamicamente
  • Implementando consultas de intervalo
  • Busca e inserção eficientes
  • Construindo coleções ordenadas
  • Apoio ao processamento de dados em tempo real
  • Habilitar recuperação rápida de mínimo/máximo

Principais recursos

  • Estrutura autoequilibrada
  • Suporte a Iterable
  • Consultas baseadas em intervalo (greaterThan, lessThanOrEqual)
  • Operações O(log n)
  • Métodos de acesso mínimo/máximo
  • Compatibilidade multiplataforma

Indicado para

  • Desenvolvedores que precisam de estruturas de dados ordenadas
  • Aplicações com inserções e pesquisas frequentes
  • Sistemas que exigem subconjuntos ordenados
  • Manuseio de dados crítico para o desempenho
  • Projetos Dart em múltiplas plataformas

Considerações

  • Maior sobrecarga de memória do que listas simples
  • Não ideal para conjuntos de dados estáticos
  • Requer entendimento dos conceitos de BST
  • Menos intuitivo do que as coleções embutidas
  • Complexidade potencial no depuração da lógica da árvore

README original

Snapshot do README original do repositório-fonte vinculado. Consulte o repositório para o conteúdo mais recente.

Self-Balancing Binary Search Tree for Dart. BST is implemented as Iterable. There are many operations such as greaterThan, lessThanOrEqual (create sublist), max , min etc.

Features

void main() {
  final myNumbers = BinaryTree([10, 8, 16, 4, 9, 13, 25, 2, 6, 12, 26, 14, 18]);
}

Binary tree stores values as a binary search tree.
For more information : Binary Search Tree.

A Self-Balancing AVL type tree is used, which balances the depth of the nodes.
For more information : Self Balancing Binary Search Tree , AVL Tree.

img.png

Usage

Use Case

You can see if you need it by looking at the benchmarks given below. It is generally advantageous in keeping long and sorted datasets. Its advantage is not noticeable on short datasets.

Benchmark scenarios

img_3.png img_1.png img_2.png

Type

Binary Tree objects must be Comparable

All of num , String , Duration etc. are Comparable.

You can define your objects as Comparable.

Comparable Documentation

void main() {
  final myLetters = BinaryTree<String>(["a", "c", "b"]);
  final myDates = BinaryTree<DateTime>([DateTime.now()]);
}
Basic operations
void main() {
  final myNumbers = BinaryTree([ 
    /*initial*/
  ]);
  myNumbers.insert(value);
  myNumbers.remove(value);
  myNumbers.contains(value);
  
}
Iterator

You can create an Iterator by "startsWith" or "endsWith" given element.

f() {
  final myNumbers = BinaryTree([10, 8, 16, 4, 9, 13, 25, 2, 6, 12, 26, 14, 18]);
  final iterator = myNumbers.iteratorFrom(8, greaterThan: true, equal: false); // defaults
  while (iterator.moveNext()) {
    print(iterator.current); // 9 , 10 ... 26
  }
}

You can also define bounds

f() {
  final myNumbers = BinaryTree([10, 8, 16, 4, 9, 13, 25, 2, 6, 12, 26, 14, 18]);
  final iterator = myNumbers.iteratorFrom(8, bound: Bound(13, equal: true));
  while (iterator.moveNext()) {
    print(iterator.current); // 9 , 10 ... 13
  }
}
toList

You can create new lists using range iterators.

f() {
  final myNumbers = BinaryTree([10, 8, 16, 4, 9, 13, 25, 2, 6, 12, 26, 14, 18]);

  myNumbers.lessThan(16);

  /// 14 , 13 , ... 2
  myNumbers.lessThanOrEqual(16);

  /// 16 , 14 , 13 , ... 2
  myNumbers.greaterThan(16);

  ///  25 , 26
  myNumbers.greaterThanOrEqual(16);

  /// 16 , 25 , 26

  /// custom bound
  myNumbers.listFrom(16, bound: Bound(13, equal: true));

  /// 16 , 14 , 13

}

Categorias

Repositório-fonte

Projetos que usam este pacote

Ainda não há dados.