Advertisement
iNoobAvicena

Height of Tree I

Nov 27th, 2020
96
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
  1. import java.util.LinkedList;
  2. import java.util.List;
  3. import java.util.Scanner;
  4.  
  5. class Node<T> {
  6.     T data;
  7.     LinkedList<Node> childs;
  8.    
  9.     public Node(T data) {
  10.         this.data = data;
  11.         this.childs = new LinkedList<Node>();
  12.     }
  13.    
  14.     public T getData(){
  15.         return this.data;
  16.     }
  17. }
  18.  
  19. public class Tree<T> {
  20.     Node root;
  21.    
  22.     public Tree(Node node) {
  23.         root = node;
  24.     }
  25.    
  26.     public Tree(T data) {
  27.         root = new Node(data);
  28.     }
  29.  
  30.     public boolean isEmpty() {
  31.         return root == null;
  32.     }
  33.    
  34.     public void add(T dataParent, T data) {
  35.         Node node = getNode(root, dataParent);
  36.         if (node != null)
  37.             node.childs.add(new Node(data));
  38.         else
  39.             System.out.println("Node Parent tidak ditemukan");
  40.     }
  41.    
  42.     public Node getNode(Node node, T data) {
  43.         if (node.data == data) return node;
  44.        
  45.         for(Object currNode : node.childs) {
  46.             Node returnNode = getNode((Node) currNode, data);
  47.             if (returnNode != null) return returnNode;
  48.         }
  49.         return null;
  50.     }
  51.    
  52.     public int height(Node current){
  53.         //LENGKAPI
  54.         if (!isEmpty()) {
  55.             if (current.childs.isEmpty()){
  56.                 return 0;
  57.             } else {
  58.                 int tinggi = 0;
  59.                 int i = 0;
  60.                 while (i < current.childs.size()) {
  61.                     int temp = height((Node)current.childs.get(i));
  62.                     if (temp < tinggi){
  63.                         break;
  64.                     } else {
  65.                         tinggi = temp;
  66.                     }
  67.                     i++;
  68.                 }
  69.                 return tinggi + 1;
  70.             }
  71.         } else {
  72.             return 0;
  73.         }
  74.     }
  75.     public void access() {
  76.         System.out.print(root.data);
  77.         access(root, "  ");
  78.     }
  79.    
  80.     private void access(Node node, String space) {        
  81.         System.out.println("");
  82.         for(Object currNode : node.childs) {
  83.             System.out.print(space + "->" + ((Node) currNode).getData());            
  84.             access((Node) currNode, space + "  ");
  85.         }
  86.        
  87.         return;
  88.     }
  89.    
  90.     public static void main(String[] args) {
  91.         Scanner in = new Scanner(System.in);
  92.         int n = in.nextInt();
  93.         int rt = in.nextInt();
  94.         Tree pohon = new Tree(new Node(rt));
  95.         for (int i = 0; i < n-1; i++) {
  96.             int p = in.nextInt();
  97.             int nd = in.nextInt();
  98.             pohon.add(p, nd);
  99.         }
  100.         pohon.access();
  101.         System.out.println("Ketinggian = " + pohon.height(pohon.root));
  102.     }
  103. }
Advertisement
RAW Paste Data Copied
Advertisement