@@ -2482,16 +2482,20 @@ exports[`App can equip single goody: JavaScript traverseInOrder 1`] = `
2482
2482
2483
2483
function* traverseInOrder(root) {
2484
2484
const stack = [[root, false]];
2485
- while (stack.length > 0) {
2485
+
2486
+ do {
2486
2487
const [node, didTraverseLeftChild] = stack.pop();
2487
- if (node) {
2488
- if (didTraverseLeftChild) {
2489
- yield node;
2490
- } else {
2491
- stack.push([node.right, false], [node, true], [node.left, false]);
2492
- }
2488
+ if (node == null) {
2489
+ continue;
2493
2490
}
2494
- }
2491
+
2492
+ if (didTraverseLeftChild) {
2493
+ yield node;
2494
+ continue;
2495
+ }
2496
+
2497
+ stack.push([node.right, false], [node, true], [node.left, false]);
2498
+ } while (stack.length > 0);
2495
2499
}
2496
2500
2497
2501
/////////////////////////// END ADVENTURE PACK CODE ////////////////////////////"
@@ -2507,13 +2511,14 @@ function isNonNullish(value) {
2507
2511
}
2508
2512
2509
2513
function* traverseLevelOrder(root) {
2510
- if (! root) {
2514
+ if (root == null ) {
2511
2515
return;
2512
2516
}
2513
2517
2514
2518
let level = [root];
2515
2519
do {
2516
2520
yield level;
2521
+
2517
2522
level = level
2518
2523
.flatMap((node) => [node.left, node.right])
2519
2524
.filter(isNonNullish);
@@ -2530,16 +2535,50 @@ exports[`App can equip single goody: JavaScript traversePostOrder 1`] = `
2530
2535
2531
2536
function* traversePostOrder(root) {
2532
2537
const stack = [[root, false]];
2533
- while (stack.length > 0) {
2538
+
2539
+ do {
2534
2540
const [node, didTraverseChildren] = stack.pop();
2535
- if (node) {
2536
- if (didTraverseChildren) {
2537
- yield node;
2538
- } else {
2539
- stack.push([node, true], [node.right, false], [node.left, false]);
2540
- }
2541
+ if (node == null) {
2542
+ continue;
2541
2543
}
2542
- }
2544
+
2545
+ if (didTraverseChildren) {
2546
+ yield node;
2547
+ continue;
2548
+ }
2549
+
2550
+ stack.push([node, true], [node.right, false], [node.left, false]);
2551
+ } while (stack.length > 0);
2552
+ }
2553
+
2554
+ /////////////////////////// END ADVENTURE PACK CODE ////////////////////////////"
2555
+ `;
2556
+
2557
+ exports[`App can equip single goody: JavaScript traversePostOrderNAry 1`] = `
2558
+ "////////////////////////// BEGIN ADVENTURE PACK CODE ///////////////////////////
2559
+ // Adventure Pack commit fake-commit-hash
2560
+ // Running at: https://example.com/
2561
+
2562
+ function* traversePostOrderNAry(root) {
2563
+ const stack = [[root, false]];
2564
+
2565
+ do {
2566
+ const [node, didTraverseChildren] = stack.pop();
2567
+ if (node == null) {
2568
+ continue;
2569
+ }
2570
+
2571
+ if (didTraverseChildren) {
2572
+ yield node;
2573
+ continue;
2574
+ }
2575
+
2576
+ stack.push([node, true]);
2577
+ // TODO: add an Array.prototype.valuesReversed() goody and use it here
2578
+ for (let i = node.children.length - 1; i >= 0; --i) {
2579
+ stack.push([node.children[i], false]);
2580
+ }
2581
+ } while (stack.length > 0);
2543
2582
}
2544
2583
2545
2584
/////////////////////////// END ADVENTURE PACK CODE ////////////////////////////"
@@ -2552,13 +2591,15 @@ exports[`App can equip single goody: JavaScript traversePreOrder 1`] = `
2552
2591
2553
2592
function* traversePreOrder(root) {
2554
2593
const stack = [root];
2555
- while (stack.length > 0) {
2594
+
2595
+ do {
2556
2596
const node = stack.pop();
2557
- if (node) {
2597
+
2598
+ if (node != null) {
2558
2599
yield node;
2559
2600
stack.push(node.right, node.left);
2560
2601
}
2561
- }
2602
+ } while (stack.length > 0);
2562
2603
}
2563
2604
2564
2605
/////////////////////////// END ADVENTURE PACK CODE ////////////////////////////"
@@ -4967,16 +5008,20 @@ function* traverseInOrder<
4967
5008
T extends { left?: T | null | undefined; right?: T | null | undefined },
4968
5009
>(root: T | null | undefined): Generator<T, void, void> {
4969
5010
const stack: [T | null | undefined, boolean][] = [[root, false]];
4970
- while (stack.length > 0) {
5011
+
5012
+ do {
4971
5013
const [node, didTraverseLeftChild] = stack.pop()!;
4972
- if (node) {
4973
- if (didTraverseLeftChild) {
4974
- yield node;
4975
- } else {
4976
- stack.push([node.right, false], [node, true], [node.left, false]);
4977
- }
5014
+ if (node == null) {
5015
+ continue;
4978
5016
}
4979
- }
5017
+
5018
+ if (didTraverseLeftChild) {
5019
+ yield node;
5020
+ continue;
5021
+ }
5022
+
5023
+ stack.push([node.right, false], [node, true], [node.left, false]);
5024
+ } while (stack.length > 0);
4980
5025
}
4981
5026
4982
5027
/////////////////////////// END ADVENTURE PACK CODE ////////////////////////////"
@@ -4994,13 +5039,14 @@ function isNonNullish<T>(value: T | null | undefined): value is T {
4994
5039
function* traverseLevelOrder<
4995
5040
T extends { left?: T | null | undefined; right?: T | null | undefined },
4996
5041
>(root: T | null | undefined): Generator<T[], void, void> {
4997
- if (! root) {
5042
+ if (root == null ) {
4998
5043
return;
4999
5044
}
5000
5045
5001
5046
let level = [root];
5002
5047
do {
5003
5048
yield level;
5049
+
5004
5050
level = level
5005
5051
.flatMap((node) => [node.left, node.right])
5006
5052
.filter(isNonNullish);
@@ -5019,16 +5065,52 @@ function* traversePostOrder<
5019
5065
T extends { left?: T | null | undefined; right?: T | null | undefined },
5020
5066
>(root: T | null | undefined): Generator<T, void, void> {
5021
5067
const stack: [T | null | undefined, boolean][] = [[root, false]];
5022
- while (stack.length > 0) {
5068
+
5069
+ do {
5023
5070
const [node, didTraverseChildren] = stack.pop()!;
5024
- if (node) {
5025
- if (didTraverseChildren) {
5026
- yield node;
5027
- } else {
5028
- stack.push([node, true], [node.right, false], [node.left, false]);
5029
- }
5071
+ if (node == null) {
5072
+ continue;
5030
5073
}
5031
- }
5074
+
5075
+ if (didTraverseChildren) {
5076
+ yield node;
5077
+ continue;
5078
+ }
5079
+
5080
+ stack.push([node, true], [node.right, false], [node.left, false]);
5081
+ } while (stack.length > 0);
5082
+ }
5083
+
5084
+ /////////////////////////// END ADVENTURE PACK CODE ////////////////////////////"
5085
+ `;
5086
+
5087
+ exports[`App can equip single goody: TypeScript traversePostOrderNAry 1`] = `
5088
+ "////////////////////////// BEGIN ADVENTURE PACK CODE ///////////////////////////
5089
+ // Adventure Pack commit fake-commit-hash
5090
+ // Running at: https://example.com/
5091
+
5092
+ function* traversePostOrderNAry<T extends { children: T[] }>(
5093
+ root: T | null | undefined,
5094
+ ): Generator<T, void, void> {
5095
+ const stack: [T | null | undefined, boolean][] = [[root, false]];
5096
+
5097
+ do {
5098
+ const [node, didTraverseChildren] = stack.pop()!;
5099
+ if (node == null) {
5100
+ continue;
5101
+ }
5102
+
5103
+ if (didTraverseChildren) {
5104
+ yield node;
5105
+ continue;
5106
+ }
5107
+
5108
+ stack.push([node, true]);
5109
+ // TODO: add an Array.prototype.valuesReversed() goody and use it here
5110
+ for (let i = node.children.length - 1; i >= 0; --i) {
5111
+ stack.push([node.children[i], false]);
5112
+ }
5113
+ } while (stack.length > 0);
5032
5114
}
5033
5115
5034
5116
/////////////////////////// END ADVENTURE PACK CODE ////////////////////////////"
@@ -5043,13 +5125,15 @@ function* traversePreOrder<
5043
5125
T extends { left?: T | null | undefined; right?: T | null | undefined },
5044
5126
>(root: T | null | undefined): Generator<T, void, void> {
5045
5127
const stack = [root];
5046
- while (stack.length > 0) {
5128
+
5129
+ do {
5047
5130
const node = stack.pop();
5048
- if (node) {
5131
+
5132
+ if (node != null) {
5049
5133
yield node;
5050
5134
stack.push(node.right, node.left);
5051
5135
}
5052
- }
5136
+ } while (stack.length > 0);
5053
5137
}
5054
5138
5055
5139
/////////////////////////// END ADVENTURE PACK CODE ////////////////////////////"
0 commit comments