binary_tree
Dart용 자가 균형 이진 탐색 트리입니다. BST는 Iterable로 구현되어 있습니다. greaterThen, lessThenOrEqual(하위 목록 생성), max, min 등 많은 연산이 있습니다.
Dart용 자가 균형 이진 탐색 트리입니다. BST는 Iterable로 구현되어 있습니다. greaterThen, lessThenOrEqual(하위 목록 생성), max, min 등 많은 연산이 있습니다.
아래는 영문 원문 스냅샷입니다. 최신 내용은 GitHub에서 확인하세요.
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.
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.
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


Binary Tree objects must be Comparable
All of num , String , Duration etc. are Comparable.
You can define your objects as Comparable.
void main() {
final myLetters = BinaryTree<String>(["a", "c", "b"]);
final myDates = BinaryTree<DateTime>([DateTime.now()]);
}
void main() {
final myNumbers = BinaryTree([
/*initial*/
]);
myNumbers.insert(value);
myNumbers.remove(value);
myNumbers.contains(value);
}
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
}
}
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
}
사용 목적에 따라 검색하고 개발 활동을 비교한 뒤 원본 저장소에서 요구 사항을 확인하세요.
“A repository is the most basic element of GitHub.”
GitHub Docs — About repositories ↗