From 0a4895c538cc96d38c6b95c8a746d18ddf4927cb Mon Sep 17 00:00:00 2001 From: Manuel Thalmann Date: Mon, 31 Oct 2022 20:50:26 +0100 Subject: [PATCH] Add server for running `AVLSearchTree` --- .../nuth/zhaw/exbox/RankingAVLTreeServer.java | 38 +++++++++++++++++++ 1 file changed, 38 insertions(+) create mode 100644 app/src/main/java/ch/nuth/zhaw/exbox/RankingAVLTreeServer.java diff --git a/app/src/main/java/ch/nuth/zhaw/exbox/RankingAVLTreeServer.java b/app/src/main/java/ch/nuth/zhaw/exbox/RankingAVLTreeServer.java new file mode 100644 index 0000000..50afead --- /dev/null +++ b/app/src/main/java/ch/nuth/zhaw/exbox/RankingAVLTreeServer.java @@ -0,0 +1,38 @@ +package ch.nuth.zhaw.exbox; + +import java.util.List; +import java.util.concurrent.atomic.AtomicInteger; + +public class RankingAVLTreeServer implements CommandExecutor { + + public Tree createTree(String rankingText) { + SortedBinaryTree result = new AVLSearchTree<>(); + List competitors = new RankingListServer().createList(rankingText); + + for (Competitor competitor : competitors) { + result.add(competitor); + } + + return result; + } + + public String createSortedText(Tree competitorTree) { + AtomicInteger rank = new AtomicInteger(1); + StringBuilder sb = new StringBuilder(); + + competitorTree.traversal().inorder( + (competitor) -> { + competitor.setRank(rank.getAndIncrement()); + sb.append(competitor); + sb.append(System.lineSeparator()); + }); + + return sb.toString(); + } + + public String execute(String rankingList) { + Tree competitorTree = createTree(rankingList); + return "Rangliste (Tree)\n" + createSortedText(competitorTree) + "\n\n" + + "Height: " + competitorTree.height() + "\nSize: " + competitorTree.size(); + } +}