Advertisement
Not a member of Pastebin yet?
Sign Up,
it unlocks many cool features!
- trait Node {
- abstract final String name
- Node parent = null
- List<Node> children = [];
- Node(name: name) {
- this.name = name
- }
- @Override
- void setChildren(List<Node> nodes) {
- nodes.each { -> node
- node.parent = this
- }
- this.children = nodes
- }
- @Override
- List<Node> getChildren() {
- this.children
- }
- void addChild(Node node) {
- node.parent = this
- this.children << node
- }
- @Override
- Node getParent() {
- this.parent?
- }
- @Override
- void setParent(Node node) {
- if (this.parent?)
- throw new Exception("Parent already set for node: ${node}")
- this.parent = node
- }
- Boolean isRoot() {
- !this.parent ? true : false
- }
- }
- class Tree {
- List<Node> nodes
- void walk() {}
- }
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement