Skip to content

Commit 3f5aae5

Browse files
committed
delete test pass.
1 parent 9f17a71 commit 3f5aae5

File tree

1 file changed

+12
-9
lines changed

1 file changed

+12
-9
lines changed

lib/trees/threaded_binary_tree.dart

+12-9
Original file line numberDiff line numberDiff line change
@@ -166,13 +166,6 @@ class ThreadedBinaryTree<V extends Comparable>
166166
return result;
167167
}
168168

169-
void _postOrder(ThreadedBinaryNode<V>? node, List<V> list) {
170-
if (node == null) return;
171-
if (!(node.leftIsThread ?? false)) _postOrder(node.left, list);
172-
if (!(node.rightIsThread ?? false)) _postOrder(node.right, list);
173-
list.add(node.value!);
174-
}
175-
176169
@override
177170
List<V> preOrder() {
178171
var result = <V>[];
@@ -214,7 +207,7 @@ class ThreadedBinaryTree<V extends Comparable>
214207
break;
215208

216209
case _DeleteCase.oneChild:
217-
var child = node.leftIsThread! ? node.right : node.left;
210+
var child = (node.leftIsThread ?? true) ? node.right : node.left;
218211

219212
if (parent == null) {
220213
root = child;
@@ -228,17 +221,19 @@ class ThreadedBinaryTree<V extends Comparable>
228221
var predecessor = _inOrderPredecessor(node);
229222
if (!(node.leftIsThread ?? true)) {
230223
predecessor!.right = successor;
224+
predecessor.rightIsThread = successor == null ? null : true;
231225
} else {
232226
if (!(node.rightIsThread ?? true)) {
233227
successor!.left = predecessor;
228+
successor.leftIsThread = predecessor == null ? null : true;
234229
}
235230
}
236231
break;
237232

238233
case _DeleteCase.twoChildren:
239234
var successor = node.right!, parentSuccessor = node;
240235

241-
while (successor.left != null && !successor.leftIsThread!) {
236+
while (!successor.leftIsThread!) {
242237
parentSuccessor = successor;
243238
successor = successor.left!;
244239
}
@@ -279,6 +274,14 @@ class ThreadedBinaryTree<V extends Comparable>
279274
return node;
280275
}
281276
}
277+
278+
void _postOrder(ThreadedBinaryNode<V>? node, List<V> list) {
279+
if (node == null) return;
280+
281+
if (!(node.leftIsThread ?? false)) _postOrder(node.left, list);
282+
if (!(node.rightIsThread ?? false)) _postOrder(node.right, list);
283+
list.add(node.value!);
284+
}
282285
}
283286

284287
enum _DeleteCase { twoChildren, oneChild, childless }

0 commit comments

Comments
 (0)