parent
a31873c566
commit
9e1e86d93a
@ -0,0 +1,40 @@
|
||||
package com.msb.composite;/**
|
||||
* @Author bingor
|
||||
* @Date 2022/10/14 18:49
|
||||
* @Description: com.msb.composite
|
||||
* @Version: 1.0
|
||||
*/
|
||||
|
||||
import java.util.ArrayList;
|
||||
import java.util.List;
|
||||
|
||||
/**
|
||||
*@ClassName BranchNode
|
||||
*@Description TODO
|
||||
*@Author bingor
|
||||
*@Date 2022/10/14 18:49
|
||||
*@Version 3.0
|
||||
*/
|
||||
public class BranchNode extends Node {
|
||||
|
||||
private String name;
|
||||
private List<Node> nodes = new ArrayList<>();
|
||||
|
||||
public BranchNode(String name) {
|
||||
this.name = name;
|
||||
}
|
||||
|
||||
@Override
|
||||
public void print() {
|
||||
System.out.println(this.name);
|
||||
}
|
||||
|
||||
public void addNode(Node node) {
|
||||
nodes.add(node);
|
||||
}
|
||||
|
||||
public List<Node> getNodes() {
|
||||
return this.nodes;
|
||||
}
|
||||
|
||||
}
|
@ -0,0 +1,27 @@
|
||||
package com.msb.composite;/**
|
||||
* @Author bingor
|
||||
* @Date 2022/10/14 16:22
|
||||
* @Description: com.msb.composite
|
||||
* @Version: 1.0
|
||||
*/
|
||||
|
||||
/**
|
||||
*@ClassName LeafNode
|
||||
*@Description TODO
|
||||
*@Author bingor
|
||||
*@Date 2022/10/14 16:22
|
||||
*@Version 3.0
|
||||
*/
|
||||
public class LeafNode extends Node {
|
||||
|
||||
private String content;
|
||||
|
||||
public LeafNode(String content) {
|
||||
this.content = content;
|
||||
}
|
||||
|
||||
@Override
|
||||
public void print() {
|
||||
System.out.println(this.content);
|
||||
}
|
||||
}
|
@ -0,0 +1,50 @@
|
||||
package com.msb.composite;/**
|
||||
* @Author bingor
|
||||
* @Date 2022/10/14 18:54
|
||||
* @Description: com.msb.composite
|
||||
* @Version: 1.0
|
||||
*/
|
||||
|
||||
/**
|
||||
*@ClassName Main
|
||||
*@Description TODO
|
||||
*@Author bingor
|
||||
*@Date 2022/10/14 18:54
|
||||
*@Version 3.0
|
||||
*/
|
||||
public class Main {
|
||||
|
||||
public static void main(String[] args) {
|
||||
BranchNode root = new BranchNode("root");
|
||||
BranchNode chapter1 = new BranchNode("chapter1");
|
||||
BranchNode chapter2 = new BranchNode("chapter2");
|
||||
LeafNode c11 = new LeafNode("c11");
|
||||
LeafNode c12 = new LeafNode("c12");
|
||||
BranchNode c2b1 = new BranchNode("c2b1");
|
||||
LeafNode c2b11 = new LeafNode("c2b11");
|
||||
LeafNode c2b12 = new LeafNode("c2b12");
|
||||
|
||||
root.addNode(chapter1);
|
||||
root.addNode(chapter2);
|
||||
chapter1.addNode(c11);
|
||||
chapter1.addNode(c12);
|
||||
chapter2.addNode(c2b1);
|
||||
c2b1.addNode(c2b11);
|
||||
c2b1.addNode(c2b12);
|
||||
|
||||
tree(root, 0);
|
||||
}
|
||||
|
||||
private static void tree(Node root, int depth) {
|
||||
for (int i=0; i<depth; i++) {
|
||||
System.out.print("--");
|
||||
}
|
||||
root.print();
|
||||
if(root instanceof BranchNode) {
|
||||
for(Node node : ((BranchNode) root).getNodes()) {
|
||||
tree(node, depth+1);
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
}
|
@ -0,0 +1,17 @@
|
||||
package com.msb.composite;/**
|
||||
* @Author bingor
|
||||
* @Date 2022/10/14 16:22
|
||||
* @Description: com.msb.composite
|
||||
* @Version: 1.0
|
||||
*/
|
||||
|
||||
/**
|
||||
*@ClassName Node
|
||||
*@Description TODO
|
||||
*@Author bingor
|
||||
*@Date 2022/10/14 16:22
|
||||
*@Version 3.0
|
||||
*/
|
||||
public abstract class Node {
|
||||
public abstract void print();
|
||||
}
|
Loading…
Reference in new issue