Solved Tasks 1-3
This commit is contained in:
		
							parent
							
								
									6c38eefcbe
								
							
						
					
					
						commit
						547f7ae499
					
				|  | @ -1,17 +1,30 @@ | ||||||
| package ch.zhaw.ads; | package ch.zhaw.ads; | ||||||
| 
 | 
 | ||||||
|  | import java.util.LinkedList; | ||||||
|  | import java.util.List; | ||||||
| import java.util.concurrent.atomic.AtomicInteger; | import java.util.concurrent.atomic.AtomicInteger; | ||||||
| 
 | 
 | ||||||
| public class RankingTreeServer implements CommandExecutor { | public class RankingTreeServer implements CommandExecutor { | ||||||
| 
 | 
 | ||||||
|     public Tree<Competitor> createTree(String rankingText) { |     public Tree<Competitor> createTree(String rankingText) { | ||||||
|         // TODO Implement |         Tree<Competitor> tree = new SortedBinaryTree<>(); | ||||||
|  |         String[] competitorsString = rankingText.split("\n"); | ||||||
|  |         for (String competitorString : competitorsString){ | ||||||
|  |             String[] values = competitorString.split(";"); | ||||||
|  |             tree.add(new Competitor(0, values[0], values[1])); | ||||||
|  |         } | ||||||
|  |         return tree; | ||||||
|     } |     } | ||||||
| 
 | 
 | ||||||
|     public String createSortedText(Tree<Competitor> competitorTree) { |     public String createSortedText(Tree<Competitor> competitorTree) { | ||||||
|         AtomicInteger rank = new AtomicInteger(1); |         AtomicInteger rank = new AtomicInteger(1); | ||||||
|         StringBuilder sb = new StringBuilder(); |         StringBuilder sb = new StringBuilder(); | ||||||
|         competitorTree.traversal() // TODO Implement |         competitorTree.traversal().inorder(new Visitor<Competitor>() { | ||||||
|  |             @Override | ||||||
|  |             public void visit(Competitor obj) { | ||||||
|  |                 sb.append(rank.getAndAdd(1) + ". " + obj.getName() + ": " + obj.getTime() + "\n"); | ||||||
|  |             } | ||||||
|  |         }); | ||||||
|         return sb.toString(); |         return sb.toString(); | ||||||
|     } |     } | ||||||
| 
 | 
 | ||||||
|  |  | ||||||
|  | @ -68,11 +68,12 @@ public class SortedBinaryTree<T extends Comparable<T>> implements Tree<T> { | ||||||
|     } |     } | ||||||
| 
 | 
 | ||||||
|     public Traversal<T> traversal() { |     public Traversal<T> traversal() { | ||||||
|         // TODO Implement |         return new TreeTraversal<T>(root); | ||||||
|     } |     } | ||||||
| 
 | 
 | ||||||
|     protected int calcHeight(TreeNode<T> node) { |     protected int calcHeight(TreeNode<T> node) { | ||||||
|         // TODO Implement |         // TODO Implement | ||||||
|  |         return 0; | ||||||
|     } |     } | ||||||
| 
 | 
 | ||||||
|     public int height() { |     public int height() { | ||||||
|  | @ -81,6 +82,7 @@ public class SortedBinaryTree<T extends Comparable<T>> implements Tree<T> { | ||||||
| 
 | 
 | ||||||
|     protected int calcSize(TreeNode<T> p) { |     protected int calcSize(TreeNode<T> p) { | ||||||
|         // TODO Implement |         // TODO Implement | ||||||
|  |         return 0; | ||||||
|     } |     } | ||||||
| 
 | 
 | ||||||
|     public int size() { |     public int size() { | ||||||
|  |  | ||||||
|  | @ -1,5 +1,9 @@ | ||||||
| package ch.zhaw.ads; | package ch.zhaw.ads; | ||||||
| 
 | 
 | ||||||
|  | import java.util.ArrayList; | ||||||
|  | import java.util.List; | ||||||
|  | import java.util.Stack; | ||||||
|  | 
 | ||||||
| public class TreeTraversal<T extends Comparable<T>> implements Traversal<T> { | public class TreeTraversal<T extends Comparable<T>> implements Traversal<T> { | ||||||
|     private final TreeNode<T> root; |     private final TreeNode<T> root; | ||||||
| 
 | 
 | ||||||
|  | @ -7,15 +11,70 @@ public class TreeTraversal<T extends Comparable<T>> implements Traversal<T> { | ||||||
|         this.root = root; |         this.root = root; | ||||||
|     } |     } | ||||||
| 
 | 
 | ||||||
|  |     @Override | ||||||
|  |     public void interval(T min, T max, Visitor<T> vistor) { | ||||||
|  | 
 | ||||||
|  |     } | ||||||
|  | 
 | ||||||
|     public void inorder(Visitor<T> vis) { |     public void inorder(Visitor<T> vis) { | ||||||
|         // TODO Implement |         inorderRec(vis, root); | ||||||
|  |     } | ||||||
|  | 
 | ||||||
|  |     private void inorderRec(Visitor<T> vis, TreeNode<T> root){ | ||||||
|  |         if(root.left != null){ | ||||||
|  |             inorderRec(vis, root.left); | ||||||
|  |         } | ||||||
|  |         vis.visit(root.getValue()); | ||||||
|  |         if(root.right != null){ | ||||||
|  |             inorderRec(vis, root.right); | ||||||
|  |         } | ||||||
|     } |     } | ||||||
| 
 | 
 | ||||||
|     public void preorder(Visitor<T> vis) { |     public void preorder(Visitor<T> vis) { | ||||||
|         // TODO Implement |         Stack<TreeNode<T>> stack = new Stack(); | ||||||
|  |         TreeNode<T> node = root; | ||||||
|  |         stack.push(node); | ||||||
|  |         while(!stack.isEmpty()) { | ||||||
|  |             node = stack.pop(); | ||||||
|  |             vis.visit(node.getValue()); | ||||||
|  |             if(node.right != null){ | ||||||
|  |                 stack.push(node.right); | ||||||
|  |             } | ||||||
|  |             if(node.left != null) { | ||||||
|  |                 stack.push(node.left); | ||||||
|  |             } | ||||||
|  |         } | ||||||
|     } |     } | ||||||
| 
 | 
 | ||||||
|     public void postorder(Visitor<T> vis) { |     public void postorder(Visitor<T> vis) { | ||||||
|         // TODO Implement |         postorderRec(vis, root); | ||||||
|  |     } | ||||||
|  | 
 | ||||||
|  |     public void postorderRec(Visitor<T> vis, TreeNode<T> root){ | ||||||
|  |         inorderRec(vis, root.left); | ||||||
|  |         inorderRec(vis, root.right); | ||||||
|  |         vis.visit(root.getValue()); | ||||||
|  |     } | ||||||
|  | 
 | ||||||
|  |     public void levelorder(Visitor<T> vis){ | ||||||
|  |         List<TreeNode<T>> nodes = new ArrayList<>(); | ||||||
|  |         nodes.add(root); | ||||||
|  |     } | ||||||
|  | 
 | ||||||
|  |     public void levelorderRec(Visitor<T> vis, List<TreeNode<T>> nodes){ | ||||||
|  |         List<TreeNode<T>> newNodes = new ArrayList<>(); | ||||||
|  |         for (TreeNode<T> node : nodes){ | ||||||
|  |             if(node.right != null){ | ||||||
|  |                 newNodes.add(node.right); | ||||||
|  |             } | ||||||
|  |             if(node.left != null) { | ||||||
|  |                 newNodes.add(node.left); | ||||||
|  |             } | ||||||
|  |             vis.visit(node.getValue()); | ||||||
|  |         } | ||||||
|  |         if(newNodes.size() > 0){ | ||||||
|  |             levelorderRec(vis, newNodes); | ||||||
|  |         } | ||||||
|  | 
 | ||||||
|     } |     } | ||||||
| } | } | ||||||
|  |  | ||||||
		Loading…
	
		Reference in New Issue