Advertisement
Not a member of Pastebin yet?
Sign Up,
it unlocks many cool features!
- @Override
- public Map<Integer, List<E>> nodesByLevel() {
- if (root == null) {
- return null;
- }
- int level = 0;
- Map<Integer, List<E>> result = new TreeMap<>();
- processBstByLevel(root, result, 0);
- return result;
- }
- private void processBstByLevel(Node<E> node, Map<Integer, List<E>> result, int level) {
- LinkedList<Node<E>> currentLevel = new LinkedList<>();
- LinkedList<Node<E>> nextLevel = new LinkedList<>();
- LinkedList<E> elements = new LinkedList<>();
- currentLevel.add(node);
- while (!currentLevel.isEmpty()) {
- Node<E> nParent = currentLevel.remove();
- elements.add(nParent.getElement());
- if (nParent.getLeft() != null) {
- nextLevel.add(nParent.getLeft());
- }
- if (nParent.getRight() != null) {
- nextLevel.add(nParent.getRight());
- }
- if (currentLevel.isEmpty()) {
- result.put(level, new LinkedList<>(elements));
- elements.clear();
- level++;
- currentLevel.addAll(nextLevel);
- nextLevel.clear();
- }
- }
- }
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement