Advertisement
moreiramota

Untitled

Feb 5th, 2019
109
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
text 1.22 KB | None | 0 0
  1. @Override
  2. public Map<Integer, List<E>> nodesByLevel() {
  3. if (root == null) {
  4. return null;
  5. }
  6. int level = 0;
  7. Map<Integer, List<E>> result = new TreeMap<>();
  8. processBstByLevel(root, result, 0);
  9. return result;
  10. }
  11.  
  12. private void processBstByLevel(Node<E> node, Map<Integer, List<E>> result, int level) {
  13. LinkedList<Node<E>> currentLevel = new LinkedList<>();
  14. LinkedList<Node<E>> nextLevel = new LinkedList<>();
  15. LinkedList<E> elements = new LinkedList<>();
  16.  
  17. currentLevel.add(node);
  18. while (!currentLevel.isEmpty()) {
  19. Node<E> nParent = currentLevel.remove();
  20. elements.add(nParent.getElement());
  21.  
  22. if (nParent.getLeft() != null) {
  23. nextLevel.add(nParent.getLeft());
  24. }
  25. if (nParent.getRight() != null) {
  26. nextLevel.add(nParent.getRight());
  27. }
  28.  
  29. if (currentLevel.isEmpty()) {
  30. result.put(level, new LinkedList<>(elements));
  31. elements.clear();
  32. level++;
  33. currentLevel.addAll(nextLevel);
  34. nextLevel.clear();
  35. }
  36. }
  37. }
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement