Compare commits

..

1 Commits

Author SHA1 Message Date
04c3728fcd
24: Add iterator param to TreeNode's constructor. (#25) 2023-07-24 18:50:46 +02:00
5 changed files with 10 additions and 13 deletions

View File

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

2
.idea/vcs.xml generated
View File

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

View File

@ -9,7 +9,7 @@ plugins {
val PUBLISH_GROUP_ID = "com.github.adriankuta" val PUBLISH_GROUP_ID = "com.github.adriankuta"
val PUBLISH_ARTIFACT_ID = "tree-structure" 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") val secretFile = File(rootProject.rootDir, "local.properties")
if (secretFile.exists()) { 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 com.github.adriankuta.datastructure.tree.iterators.TreeNodeIterators.*
import kotlin.jvm.JvmSynthetic 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 private var _parent: TreeNode<T>? = null
@ -33,11 +36,6 @@ open class TreeNode<T>(val value: T) : Iterable<TreeNode<T>>, ChildDeclarationIn
val isRoot: Boolean val isRoot: Boolean
get() = _parent == null get() = _parent == null
/**
* Choose one of available iterators from [TreeNodeIterators]
*/
var defaultIterator: TreeNodeIterators = PreOrder
/** /**
* Add new child to current node or root. * 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) PreOrder -> PreOrderTreeIterator(this)
PostOrder -> PostOrderTreeIterator(this) PostOrder -> PostOrderTreeIterator(this)
LevelOrder -> LevelOrderTreeIterator(this) LevelOrder -> LevelOrderTreeIterator(this)

View File

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