Advertisement
Guest User

aufgabe3 4real

a guest
Dec 15th, 2019
103
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
text 2.87 KB | None | 0 0
  1. import java.util.ArrayList;
  2. import java.util.List;
  3.  
  4. /**
  5. * ## Binärbäume rekursiv verarbeiten
  6. *
  7. * Gegeben sei die Klasse `Node` mit der Binärbäume gebildet werden können, die
  8. * Zeichenketten als Werte speichern können.
  9. *
  10. * Entwickeln Sie nun bitte die folgenden Methoden:
  11. *
  12. * - `serialize()`: Erzeugt eine Liste in dem der Baum inorder durchlaufen wird.
  13. * - `count()`: Liefert die Anzahl an Knoten in einem Baum. - `depth()`: Liefert
  14. * die maximale Tiefe eines Baums. - `longest()`: Findet das längste (im Baum am
  15. * tiefsten rechts stehende) Wort.
  16. *
  17. * Sie finden Aufrufbeispiele in der `main()`-Methode.
  18. *
  19. * __Hinweis__:
  20. *
  21. * - Sehen Sie sich noch einmal die Inhalte zu rekursiven Datenstrukturen der
  22. * Unit 05 an.
  23. *
  24. * __Verbote__:
  25. *
  26. * - Sie sollen rekursiv programmieren, d.h. Schleifen aller Art sind verboten.
  27. *
  28. */
  29. class Main {
  30.  
  31. public static void main(String[] args) {
  32. Node tree = new Node("f", new Node("o", new Node("C", new Node("tasty"), null), new Node("F")),
  33. new Node("E", null, new Node("e")));
  34. // Hinweis, der Evaluator wird diesen Baum in folgender
  35. // Notation ausgeben (Pattern: %value[%left,%right])
  36. // <f[o[C[tasty,null],F],E[null,e]]>
  37.  
  38. List<String> serialized = serialize(tree);
  39. System.out.println(serialized); // => [tasty, C, o, F, f, E, e]
  40. System.out.println(count(tree)); // => 7
  41. System.out.println(longest(tree)); // => tasty
  42. System.out.println(depth(tree)); // => 4
  43. }
  44.  
  45. public static int depth(Node tree) {
  46. if (tree == null)
  47. return 0;
  48. return 1 + Math.max(depth(tree.left), depth(tree.right));
  49. }
  50.  
  51. public static String longest(Node tree) {
  52. if (tree == null)
  53. return "";
  54.  
  55. String s = tree.value;
  56.  
  57. if (tree.left != null) {
  58. if (tree.left.value.length() >= s.length()) {
  59. s = longest(tree.left);
  60. }
  61. }
  62. if (tree.right != null) {
  63. if (tree.right.value.length() >= s.length()) {
  64. s = longest(tree.right);
  65. }
  66. }
  67. return s;
  68.  
  69. }
  70.  
  71. public static int count(Node tree) {
  72. if (tree == null)
  73. return 0;
  74. return 1 + count(tree.left) + count(tree.right);
  75. }
  76.  
  77. public static List<String> serialize(Node tree) {
  78.  
  79. List<String> treeList = new ArrayList<>();
  80. if (tree == null)
  81. return treeList;
  82. if (tree.left == null && tree.right == null) {
  83. treeList.add(tree.value);
  84. return treeList;
  85. }
  86. if (tree.left != null)
  87. treeList.addAll(serialize(tree.left));
  88.  
  89. treeList.add(tree.value);
  90. if (tree.right != null)
  91. treeList.addAll(serialize(tree.right));
  92.  
  93. return treeList;
  94. }
  95. }
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement