Advertisement
atanasovetr

TreeImplementationBFS

Apr 10th, 2020
288
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
Java 2.42 KB | None | 0 0
  1. import java.util.*;
  2. public class TreeImplementationBFS {
  3.  
  4.     public static void main(String[] args) {
  5.         Node<Integer> root = createTree();
  6.         printTree(root);
  7.     }
  8.  
  9.     private static Node<Integer> createTree() {
  10.         Node<Integer> root = new Node<>(1);
  11.  
  12.         Node<Integer> node1 = root.addChild(new Node<Integer>(2));
  13.         Node<Integer> node2 = root.addChild(new Node<Integer>(3));
  14.         Node<Integer> node3 = root.addChild(new Node<Integer>(4));
  15.  
  16.         Node<Integer> node11 = node1.addChild(new Node<Integer>(5));
  17.         Node<Integer> node12 = node1.addChild(new Node<Integer>(6));
  18.         Node<Integer> node31 = node3.addChild(new Node<Integer>(7));
  19.         Node<Integer> node32 = node3.addChild(new Node<Integer>(8));
  20.  
  21.         Node<Integer> node111 = node11.addChild(new Node<Integer>(9));
  22.         Node<Integer> node112 = node11.addChild(new Node<Integer>(10));
  23.         Node<Integer> node311 = node31.addChild(new Node<Integer>(11));
  24.         Node<Integer> node312 = node31.addChild(new Node<Integer>(12));
  25.  
  26.  
  27.         return root;
  28.     }
  29.  
  30.     private static <T> void printTree(Node<T> node) {
  31.        Queue<Node<T>> q = new LinkedList<Node<T>>();
  32.        q.add(node);
  33.  
  34.        while (!q.isEmpty()) {
  35.            Node<T> n =  q.remove();
  36.            System.out.print(" " + n.getData());
  37.            if (n.getChildren().size() !=0) {
  38.                q.addAll(n.getChildren());
  39.            }
  40.     }
  41.  
  42.  
  43.     }
  44. }
  45.     class Node<T> {
  46.  
  47.         private T data = null;
  48.  
  49.         private List<Node<T>> children = new ArrayList<>();
  50.  
  51.         private Node<T> parent = null;
  52.  
  53.         public Node(T data) {
  54.             this.data = data;
  55.         }
  56.  
  57.         public Node<T> addChild(Node<T> child) {
  58.             child.setParent(this);
  59.             this.children.add(child);
  60.             return child;
  61.         }
  62.  
  63.         public void addChildren(List<Node<T>> children) {
  64.             children.forEach(each -> each.setParent(this));
  65.             this.children.addAll(children);
  66.         }
  67.  
  68.         public List<Node<T>> getChildren() {
  69.             return children;
  70.         }
  71.  
  72.         public T getData() {
  73.             return data;
  74.         }
  75.  
  76.         public void setData(T data) {
  77.             this.data = data;
  78.         }
  79.  
  80.         private void setParent(Node<T> parent) {
  81.             this.parent = parent;
  82.         }
  83.  
  84.         public Node<T> getParent() {
  85.             return parent;
  86.         }
  87.  
  88.     }
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement