package com.bagri.core.server.api.impl; import java.util.ArrayList; import java.util.List; public class TreeNode<T> { private T data; private TreeNode<T> parent; private List<TreeNode<T>> children; public TreeNode(T data) { this.data = data; this.children = new ArrayList<TreeNode<T>>(); } public TreeNode<T> addChild(T child) { TreeNode<T> childNode = new TreeNode<T>(child); childNode.parent = this; this.children.add(childNode); return childNode; } public void fillData(List<T> list) { list.add(data); for (TreeNode<T> node: children) { node.fillData(list); } } public T getData() { return data; } public TreeNode<T> getParent() { return parent; } public TreeNode<T> getLastNode() { if (children.size() > 0) { return children.get(children.size() - 1); } return null; } public String toString() { return "TreeNode [data: " + data.toString() + "; children: " + children.size() + "]"; } // other features ... }