Advertisement
Guest User

Untitled

a guest
May 27th, 2017
63
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
Java 3.31 KB | None | 0 0
  1. import java.util.*;
  2.  
  3. class Prob51 {
  4.     public static void main(String[] args) {
  5.         Scanner in= new Scanner(System.in);
  6.         int ncasos=in.nextInt();
  7.         int flag=in.nextInt();
  8.         in.nextLine();
  9.         for ( int c=0; c<ncasos; c++){
  10.             String x= in.nextLine();
  11.             Tree arv = new Tree();
  12.             arv.CreateTree(x);
  13.             if (flag==0) {
  14.                 arv.ImprimeRaiz();
  15.                 System.out.println();
  16.             }//flag0
  17.             if (flag==1) {
  18.                 if (arv.Equilibrada(arv.root))
  19.                     System.out.println("Equilibrada");
  20.                 else{System.out.println("Desequilibrada");}
  21.             }//else aka flag1  
  22.         }//for
  23.     }//main
  24. }//class prob51
  25.  
  26. class Node {
  27.     int val;
  28.     Node esq, dir;
  29.  
  30.     Node(int v) {
  31.     val=v;
  32.     esq=null;
  33.     dir=null;
  34.     }//node
  35. }//class Node
  36.  
  37. class Tree {
  38.     Node root;
  39.     Tree() {root=null;}
  40.     Node converte(String s) {
  41.         if(s.equals("N"))
  42.             return null;
  43.         else {return new Node(new Integer(s));}
  44.     }//converte
  45.  
  46.     Scanner in;
  47.     LinkedList<Node> lista = new LinkedList<Node>();
  48.  
  49.     public void CreateTree(String s) {
  50.         in=new Scanner(s);
  51.         root = insertNode(root);
  52.     }//createTree
  53.  
  54.     Node insertNode(Node r) {
  55.         Node n;
  56.         r=converte(in.next());
  57.         if (r==null){return null;}
  58.         else {lista.addLast(r);}
  59.         while (lista.size()>0) {
  60.             n=lista.removeFirst();
  61.             if (in.hasNext())
  62.                 n.esq=converte(in.next());
  63.             if (in.hasNext())
  64.                 n.dir=converte(in.next());
  65.             if (n.esq!=null)
  66.                 lista.addLast(n.esq);
  67.             if (n.dir!=null)
  68.                 lista.addLast(n.dir);
  69.         }//while
  70.         return r;
  71.     }//insertnode
  72. //FLAG0
  73.     void Imprime(Node r) {
  74.  
  75.         if (r==null) {return;}
  76.         else{
  77.         System.out.print(" "+r.val);
  78.         Imprime(r.esq);
  79.         Imprime(r.dir);
  80.         }//else
  81.     }//imprime
  82.  
  83.     void ImprimeRaiz() {
  84.         if (root==null) {
  85.             System.out.print("vazia");
  86.         }
  87.         else {
  88.             System.out.print(root.val);
  89.             Imprime(root.esq);
  90.             Imprime(root.dir);
  91.         }//else
  92.     }//ImprimeRaiz
  93.  
  94. //FLAG1
  95.     int somae=0;
  96.     int somad=0;
  97.  
  98.     int Pesoe(Node n){
  99.         if (n==null)
  100.             return somae;
  101.         else{
  102.             somae += n.val;
  103.             Pesoe(n.esq);
  104.             Pesoe(n.dir);
  105.         }
  106.         return somae;
  107.     }//peso
  108.  
  109.     int Pesod(Node n){
  110.         if (n==null)
  111.             return somad;
  112.         else{
  113.             somad += n.val;
  114.             Pesod(n.esq);
  115.             Pesod(n.dir);
  116.         }
  117.         return somad;
  118.     }//peso
  119.  
  120.     boolean Equilibrada(Node n){
  121.         if (n==null)
  122.             return true;
  123.         else{
  124.             if (n.esq==null)
  125.                 return Equilibrada(n.dir);
  126.             if (n.dir==null)
  127.                 return Equilibrada(n.esq);
  128.             else{
  129.                 float somaesq = Pesoe(n.esq);
  130.                 float somadir = Pesod(n.dir);
  131.                 if (((Math.abs((somaesq-somadir)))/((somaesq+somadir)))<=(0.01))
  132.                     return true;
  133.                 else{return false;}
  134.             }
  135.         }
  136.     }
  137. }//class Tree
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement