24: Add iterator param to TreeNode's constructor. (#25)

This commit is contained in:
Adrian Kuta 2023-07-24 18:50:46 +02:00 committed by GitHub
parent d34050e9af
commit 04c3728fcd
No known key found for this signature in database
GPG Key ID: 4AEE18F83AFDEB23
5 changed files with 10 additions and 13 deletions

View File

@ -2,7 +2,7 @@ name: Publish Snapshot
on:
push:
branches: [master, '14-**']
branches: [master]
jobs:
test:

2
.idea/vcs.xml generated
View File

@ -1,6 +1,6 @@
<?xml version="1.0" encoding="UTF-8"?>
<project version="4">
<component name="VcsDirectoryMappings">
<mapping directory="$PROJECT_DIR$" vcs="Git" />
<mapping directory="" vcs="Git" />
</component>
</project>

View File

@ -9,7 +9,7 @@ plugins {
val PUBLISH_GROUP_ID = "com.github.adriankuta"
val PUBLISH_ARTIFACT_ID = "tree-structure"
val PUBLISH_VERSION = "3.0.1"
val PUBLISH_VERSION = "3.0.2"
val secretFile = File(rootProject.rootDir, "local.properties")
if (secretFile.exists()) {

View File

@ -8,7 +8,10 @@ import com.github.adriankuta.datastructure.tree.iterators.TreeNodeIterators
import com.github.adriankuta.datastructure.tree.iterators.TreeNodeIterators.*
import kotlin.jvm.JvmSynthetic
open class TreeNode<T>(val value: T) : Iterable<TreeNode<T>>, ChildDeclarationInterface<T> {
/**
* @param treeIterator Choose one of available iterators from [TreeNodeIterators]
*/
open class TreeNode<T>(val value: T, var treeIterator: TreeNodeIterators = PreOrder) : Iterable<TreeNode<T>>, ChildDeclarationInterface<T> {
private var _parent: TreeNode<T>? = null
@ -33,11 +36,6 @@ open class TreeNode<T>(val value: T) : Iterable<TreeNode<T>>, ChildDeclarationIn
val isRoot: Boolean
get() = _parent == null
/**
* Choose one of available iterators from [TreeNodeIterators]
*/
var defaultIterator: TreeNodeIterators = PreOrder
/**
* Add new child to current node or root.
*
@ -166,9 +164,9 @@ open class TreeNode<T>(val value: T) : Iterable<TreeNode<T>>, ChildDeclarationIn
}
/**
* You can change default iterator by changing [defaultIterator] property.
* You can change default iterator by changing [treeIterator] property.
*/
override fun iterator(): Iterator<TreeNode<T>> = when (defaultIterator) {
override fun iterator(): Iterator<TreeNode<T>> = when (treeIterator) {
PreOrder -> PreOrderTreeIterator(this)
PostOrder -> PostOrderTreeIterator(this)
LevelOrder -> LevelOrderTreeIterator(this)

View File

@ -19,8 +19,7 @@ inline fun <reified T> tree(
defaultIterator: TreeNodeIterators = TreeNodeIterators.PreOrder,
childDeclaration: ChildDeclaration<T>
): TreeNode<T> {
val treeNode = TreeNode(root)
treeNode.defaultIterator = defaultIterator
val treeNode = TreeNode(root, defaultIterator)
treeNode.childDeclaration()
return treeNode
}