Advertisement
RRPetrova

Tree

Mar 9th, 2022
68
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
text 1.26 KB | None | 0 0
  1. package implementations;
  2.  
  3. import java.util.LinkedHashMap;
  4. import java.util.Map;
  5.  
  6. public class TreeFactory {
  7. private Map<Integer, Tree<Integer>> nodesByKeys;
  8.  
  9. public TreeFactory() {
  10. this.nodesByKeys = new LinkedHashMap<>();
  11. }
  12.  
  13. public Tree<Integer> createTreeFromStrings(String[] input) {
  14. for (String s : input) {
  15. //5 4
  16. String[] pair = s.split("\\s+");
  17. int par = Integer.parseInt(pair[0]);
  18. int ch = Integer.parseInt(pair[1]);
  19. addEdge(par, ch);
  20. }
  21.  
  22. return getRoot();
  23. }
  24.  
  25. private Tree<Integer> getRoot() {
  26. for (Tree<Integer> value : this.nodesByKeys.values()) {
  27. if (value.getParent() == null) {
  28. return value;
  29. }
  30. }
  31. return null;
  32. }
  33.  
  34. public Tree<Integer> createNodeByKey(int key) {
  35. this.nodesByKeys.putIfAbsent(key, new Tree<>(key));
  36. return this.nodesByKeys.get(key);
  37. }
  38.  
  39. public void addEdge(int parent, int child) {
  40. Tree<Integer> parentTree = this.createNodeByKey(parent);
  41. Tree<Integer> childTree = this.createNodeByKey(child);
  42.  
  43. parentTree.addChild(childTree);
  44. childTree.setParent(parentTree);
  45. }
  46. }
  47.  
  48.  
  49.  
  50.  
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement