Compare commits

..

No commits in common. "master" and "v3.0.1" have entirely different histories.

5 changed files with 13 additions and 10 deletions

View File

@ -2,7 +2,7 @@ name: Publish Snapshot
on: on:
push: push:
branches: [master] branches: [master, '14-**']
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="" vcs="Git" /> <mapping directory="$PROJECT_DIR$" 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.2" val PUBLISH_VERSION = "3.0.1"
val secretFile = File(rootProject.rootDir, "local.properties") val secretFile = File(rootProject.rootDir, "local.properties")
if (secretFile.exists()) { if (secretFile.exists()) {

View File

@ -8,10 +8,7 @@ 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
@ -36,6 +33,11 @@ open class TreeNode<T>(val value: T, var treeIterator: TreeNodeIterators = PreOr
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.
* *
@ -164,9 +166,9 @@ open class TreeNode<T>(val value: T, var treeIterator: TreeNodeIterators = PreOr
} }
/** /**
* You can change default iterator by changing [treeIterator] property. * You can change default iterator by changing [defaultIterator] property.
*/ */
override fun iterator(): Iterator<TreeNode<T>> = when (treeIterator) { override fun iterator(): Iterator<TreeNode<T>> = when (defaultIterator) {
PreOrder -> PreOrderTreeIterator(this) PreOrder -> PreOrderTreeIterator(this)
PostOrder -> PostOrderTreeIterator(this) PostOrder -> PostOrderTreeIterator(this)
LevelOrder -> LevelOrderTreeIterator(this) LevelOrder -> LevelOrderTreeIterator(this)

View File

@ -19,7 +19,8 @@ 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, defaultIterator) val treeNode = TreeNode(root)
treeNode.defaultIterator = defaultIterator
treeNode.childDeclaration() treeNode.childDeclaration()
return treeNode return treeNode
} }