Advertisement
Not a member of Pastebin yet?
Sign Up,
it unlocks many cool features!
- import java.util.*;
- class Prob51 {
- public static void main(String[] args) {
- Scanner in= new Scanner(System.in);
- int ncasos=in.nextInt();
- int flag=in.nextInt();
- in.nextLine();
- for ( int c=0; c<ncasos; c++){
- String x= in.nextLine();
- Tree arv = new Tree();
- arv.CreateTree(x);
- if (flag==0) {
- arv.ImprimeRaiz();
- System.out.println();
- }//flag0
- if (flag==1) {
- if (arv.Equilibrada(arv.root))
- System.out.println("Equilibrada");
- else{System.out.println("Desequilibrada");}
- }//else aka flag1
- }//for
- }//main
- }//class prob51
- class Node {
- int val;
- Node esq, dir;
- Node(int v) {
- val=v;
- esq=null;
- dir=null;
- }//node
- }//class Node
- class Tree {
- Node root;
- Tree() {root=null;}
- Node converte(String s) {
- if(s.equals("N"))
- return null;
- else {return new Node(new Integer(s));}
- }//converte
- Scanner in;
- LinkedList<Node> lista = new LinkedList<Node>();
- public void CreateTree(String s) {
- in=new Scanner(s);
- root = insertNode(root);
- }//createTree
- Node insertNode(Node r) {
- Node n;
- r=converte(in.next());
- if (r==null){return null;}
- else {lista.addLast(r);}
- while (lista.size()>0) {
- n=lista.removeFirst();
- if (in.hasNext())
- n.esq=converte(in.next());
- if (in.hasNext())
- n.dir=converte(in.next());
- if (n.esq!=null)
- lista.addLast(n.esq);
- if (n.dir!=null)
- lista.addLast(n.dir);
- }//while
- return r;
- }//insertnode
- //FLAG0
- void Imprime(Node r) {
- if (r==null) {return;}
- else{
- System.out.print(" "+r.val);
- Imprime(r.esq);
- Imprime(r.dir);
- }//else
- }//imprime
- void ImprimeRaiz() {
- if (root==null) {
- System.out.print("vazia");
- }
- else {
- System.out.print(root.val);
- Imprime(root.esq);
- Imprime(root.dir);
- }//else
- }//ImprimeRaiz
- //FLAG1
- int somae=0;
- int somad=0;
- int Pesoe(Node n){
- if (n==null)
- return somae;
- else{
- somae += n.val;
- Pesoe(n.esq);
- Pesoe(n.dir);
- }
- return somae;
- }//peso
- int Pesod(Node n){
- if (n==null)
- return somad;
- else{
- somad += n.val;
- Pesod(n.esq);
- Pesod(n.dir);
- }
- return somad;
- }//peso
- boolean Equilibrada(Node n){
- if (n==null)
- return true;
- else{
- if (n.esq==null)
- return Equilibrada(n.dir);
- if (n.dir==null)
- return Equilibrada(n.esq);
- else{
- float somaesq = Pesoe(n.esq);
- float somadir = Pesod(n.dir);
- if (((Math.abs((somaesq-somadir)))/((somaesq+somadir)))<=(0.01))
- return true;
- else{return false;}
- }
- }
- }
- }//class Tree
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement