summaryrefslogtreecommitdiff
path: root/BJC-Utils2
diff options
context:
space:
mode:
authorbjculkin <bjculkin@mix.wvu.edu>2017-03-19 19:05:18 -0400
committerbjculkin <bjculkin@mix.wvu.edu>2017-03-19 19:05:18 -0400
commit31bdd87d4d3330bd2da8ada79e213e1c232f4183 (patch)
tree3c7cf2f4be113e722619e4d6c1774f71bebb555e /BJC-Utils2
parent415f5689fe900a04bf64d41878cfa225905b6617 (diff)
Add prepending children to trees
Diffstat (limited to 'BJC-Utils2')
-rw-r--r--BJC-Utils2/src/main/java/bjc/utils/data/ITree.java11
-rw-r--r--BJC-Utils2/src/main/java/bjc/utils/data/Tree.java13
2 files changed, 22 insertions, 2 deletions
diff --git a/BJC-Utils2/src/main/java/bjc/utils/data/ITree.java b/BJC-Utils2/src/main/java/bjc/utils/data/ITree.java
index 9132278..30d5558 100644
--- a/BJC-Utils2/src/main/java/bjc/utils/data/ITree.java
+++ b/BJC-Utils2/src/main/java/bjc/utils/data/ITree.java
@@ -18,14 +18,21 @@ import java.util.function.UnaryOperator;
*/
public interface ITree<ContainedType> {
/**
- * Add a child to this node
+ * Append a child to this node.
*
* @param child
- * The child to add to this node
+ * The child to append to this node.
*/
public void addChild(ITree<ContainedType> child);
/**
+ * Prepend a child to this node.
+ *
+ * @param child The child to prepend to this node.
+ */
+ void prependChild(ITree<ContainedType> child);
+
+ /**
* Collapse a tree into a single version
*
* @param <NewType>
diff --git a/BJC-Utils2/src/main/java/bjc/utils/data/Tree.java b/BJC-Utils2/src/main/java/bjc/utils/data/Tree.java
index 34e074b..cf4d1fb 100644
--- a/BJC-Utils2/src/main/java/bjc/utils/data/Tree.java
+++ b/BJC-Utils2/src/main/java/bjc/utils/data/Tree.java
@@ -349,4 +349,17 @@ public class Tree<ContainedType> implements ITree<ContainedType> {
return -1;
}
+
+ @Override
+ public void prependChild(ITree<ContainedType> child) {
+ if(hasChildren == false) {
+ hasChildren = true;
+
+ children = new FunctionalList<>();
+ }
+
+ childCount++;
+
+ children.prepend(child);
+ }
}