Skip to content

Commit 0d1b947

Browse files
authored
Merge pull request #38 from happy-san/nnbd
Migration towards nnbd.
2 parents 5146e18 + b655b84 commit 0d1b947

31 files changed

+1339
-1129
lines changed

lib/trees/avl_tree.dart

Lines changed: 374 additions & 165 deletions
Large diffs are not rendered by default.

lib/trees/binary_search_tree.dart

Lines changed: 11 additions & 12 deletions
Original file line numberDiff line numberDiff line change
@@ -1,4 +1,3 @@
1-
// @dart=2.9
21
import 'adt/binary_tree_adt.dart';
32
import 'binary_tree.dart';
43

@@ -11,7 +10,7 @@ import 'binary_tree.dart';
1110
class BinarySearchTree<V extends Comparable>
1211
extends BinaryTreeADT<BinaryNode<V>, V> {
1312
/// Root of the tree
14-
BinaryNode<V> root;
13+
BinaryNode<V>? root;
1514

1615
/// Creates an empty BST.
1716
BinarySearchTree();
@@ -32,7 +31,7 @@ class BinarySearchTree<V extends Comparable>
3231
if (isEmpty) {
3332
root = node;
3433
} else {
35-
_compareAndAdd(root, node);
34+
_compareAndAdd(root!, node);
3635
}
3736
}
3837

@@ -48,7 +47,7 @@ class BinarySearchTree<V extends Comparable>
4847
@override
4948
void delete(V value) {
5049
if (!isEmpty) {
51-
root = _delete(root, value);
50+
root = _delete(root!, value);
5251
}
5352
}
5453

@@ -66,30 +65,30 @@ class BinarySearchTree<V extends Comparable>
6665
return;
6766
}
6867

69-
if (node.value.compareTo(newNode.value) > 0) {
68+
if (node.value!.compareTo(newNode.value) > 0) {
7069
if (node.left == null) {
7170
// newNode has lower value and becomes left child of the node.
7271
node.left = newNode;
7372
} else {
74-
_compareAndAdd(node.left, newNode);
73+
_compareAndAdd(node.left!, newNode);
7574
}
7675
} else {
7776
if (node.right == null) {
7877
// newNode has greater value and becomes right child of node.
7978
node.right = newNode;
8079
} else {
81-
_compareAndAdd(node.right, newNode);
80+
_compareAndAdd(node.right!, newNode);
8281
}
8382
}
8483
}
8584

86-
BinaryNode<V> _delete(BinaryNode node, V value) {
85+
BinaryNode<V>? _delete(BinaryNode<V>? node, V value) {
8786
// Base Case, Key not found
8887
if (node == null) return node;
8988

90-
if (node.value.compareTo(value) > 0) {
89+
if (node.value!.compareTo(value) > 0) {
9190
node.left = _delete(node.left, value);
92-
} else if (node.value.compareTo(value) < 0) {
91+
} else if (node.value!.compareTo(value) < 0) {
9392
node.right = _delete(node.right, value);
9493
} else {
9594
// Node with value found.
@@ -98,11 +97,11 @@ class BinarySearchTree<V extends Comparable>
9897
if (node.left != null && node.right != null) {
9998
// Successor to the node is the next inOrder node.
10099
var successor = node.right;
101-
while (successor.left != null) {
100+
while (successor!.left != null) {
102101
successor = successor.left;
103102
}
104103
node.value = successor.value;
105-
node.right = _delete(node.right, successor.value);
104+
node.right = _delete(node.right, successor.value!);
106105
} else {
107106
if (node.left != null) {
108107
// Node only has left child.

lib/trees/binary_tree.dart

Lines changed: 2 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -1,10 +1,9 @@
1-
// @dart=2.9
21
import 'adt/binary_tree_adt.dart';
32

43
/// A binary node has at most two children, which are referred to as the
54
/// [left] child and the [right] child.
65
class BinaryNode<V extends Comparable> extends BinaryNodeADT<BinaryNode<V>, V> {
7-
V value;
6+
V? value;
87

98
/// Creates a node with [value].
109
BinaryNode(this.value);
@@ -14,7 +13,7 @@ class BinaryNode<V extends Comparable> extends BinaryNodeADT<BinaryNode<V>, V> {
1413
/// [BinaryNode]s (starting at a [root] node).
1514
class BinaryTree<V extends Comparable> {
1615
/// Root of tree.
17-
BinaryNode root;
16+
BinaryNode? root;
1817

1918
/// Creates an empty Binary tree.
2019
BinaryTree();

0 commit comments

Comments
 (0)