/** * Diese Methode sucht mit der Breitensuche einen Knoten im Baum. Es wird null zurückgegeben, wenn * der Knoten nicht gefunden wurde. * * @param item der zu suchende Knoten * @return den Knoten wenn er gefunden wurde, sonst null */ public ADicomTreeItem lookUpDicomTreeItem(ADicomTreeItem item) { Queue<ADicomTreeItem> queue = new LinkedList<>(); ArrayList<ADicomTreeItem> visited = new ArrayList<>(); queue.offer(root); visited.add(root); while (queue.size() > 0) { ADicomTreeItem actual = queue.poll(); if (actual.getUid().equals(item.getUid())) { return actual; } for (ADicomTreeItem child : actual.getChildren()) { if (!visited.contains(child)) { queue.offer(child); visited.add(child); } } } return null; }
/** Testmethode, ob alle Teile des Baumes durchlaufen werden. */ public void walkDicomTreeRepository() { Queue<ADicomTreeItem> queue = new LinkedList<>(); ArrayList<ADicomTreeItem> visited = new ArrayList<>(); queue.offer(root); visited.add(root); while (queue.size() > 0) { ADicomTreeItem actual = queue.poll(); // System.out.println(actual.getUid()); for (ADicomTreeItem child : actual.getChildren()) { if (!visited.contains(child)) { queue.offer(child); visited.add(child); System.out.println("Visited " + child.getUid()); } } } }