Skip to content

Commit c6f0046

Browse files
committed
Add tree traversal
1 parent 022abaa commit c6f0046

File tree

4 files changed

+37
-16
lines changed

4 files changed

+37
-16
lines changed

src/main/kotlin/ru/romanow/algorithms/InOrderDeepFirstSearch.kt

Lines changed: 12 additions & 5 deletions
Original file line numberDiff line numberDiff line change
@@ -3,12 +3,19 @@ package ru.romanow.algorithms
33
import ru.romanow.models.TreeNode
44

55
class InOrderDeepFirstSearch {
6-
fun traverse(node: TreeNode?): List<Int> {
6+
fun traverse(root: TreeNode?): List<Int> {
7+
val result = mutableListOf<Int>()
8+
traverse(root, result)
9+
return result
10+
}
11+
12+
private fun traverse(node: TreeNode?, accumulator: MutableList<Int>) {
713
if (node == null) {
8-
return emptyList()
14+
return
915
}
10-
return traverse(node.left) +
11-
listOf(node.value) +
12-
traverse(node.right)
16+
traverse(node.left, accumulator)
17+
// print("${node.value} ")
18+
accumulator.add(node.value)
19+
traverse(node.right, accumulator)
1320
}
1421
}

src/main/kotlin/ru/romanow/algorithms/PostOrderDeepFirstSearch.kt

Lines changed: 12 additions & 5 deletions
Original file line numberDiff line numberDiff line change
@@ -3,12 +3,19 @@ package ru.romanow.algorithms
33
import ru.romanow.models.TreeNode
44

55
class PostOrderDeepFirstSearch {
6-
fun traverse(node: TreeNode?): List<Int> {
6+
fun traverse(root: TreeNode?): List<Int> {
7+
val result = mutableListOf<Int>()
8+
traverse(root, result)
9+
return result
10+
}
11+
12+
private fun traverse(node: TreeNode?, accumulator: MutableList<Int>) {
713
if (node == null) {
8-
return emptyList()
14+
return
915
}
10-
return traverse(node.right) +
11-
traverse(node.left) +
12-
listOf(node.value)
16+
traverse(node.left, accumulator)
17+
traverse(node.right, accumulator)
18+
// print("${node.value} ")
19+
accumulator.add(node.value)
1320
}
1421
}

src/main/kotlin/ru/romanow/algorithms/PreOrderDeepFirstSearch.kt

Lines changed: 12 additions & 5 deletions
Original file line numberDiff line numberDiff line change
@@ -3,12 +3,19 @@ package ru.romanow.algorithms
33
import ru.romanow.models.TreeNode
44

55
class PreOrderDeepFirstSearch {
6-
fun traverse(node: TreeNode?): List<Int> {
6+
fun traverse(root: TreeNode?): List<Int> {
7+
val result = mutableListOf<Int>()
8+
traverse(root, result)
9+
return result
10+
}
11+
12+
private fun traverse(node: TreeNode?, accumulator: MutableList<Int>) {
713
if (node == null) {
8-
return emptyList()
14+
return
915
}
10-
return listOf(node.value) +
11-
traverse(node.left) +
12-
traverse(node.right)
16+
// print("${node.value} ")
17+
accumulator.add(node.value)
18+
traverse(node.left, accumulator)
19+
traverse(node.right, accumulator)
1320
}
1421
}

src/test/kotlin/ru/romanow/algorithms/PostOrderDeepFirstSearchTest.kt

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -24,6 +24,6 @@ class PostOrderDeepFirstSearchTest {
2424

2525
internal class ValueProvider : ArgumentsProvider {
2626
override fun provideArguments(context: ExtensionContext): Stream<Arguments> =
27-
Stream.of(Arguments.of(listOf(10, 5, 15, 3, 7, 12, 20), listOf(20, 12, 15, 7, 3, 5, 10)))
27+
Stream.of(Arguments.of(listOf(10, 5, 15, 3, 7, 12, 20), listOf(3, 7, 5, 12, 20, 15, 10)))
2828
}
2929
}

0 commit comments

Comments
 (0)