Advertisement
Guest User

Untitled

a guest
Jun 22nd, 2017
67
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
Java 5 1.47 KB | None | 0 0
  1.     private void splay(No no) {
  2.        
  3.         while (!raiz.equals(no)) {
  4.            
  5.             int zigType = whichZig(no, no.getPai(), no.getPai().getPai());
  6.            
  7.             switch (zigType) {
  8.             case 1:
  9.                 Zig_right(no, no.getPai());
  10.                 break;
  11.             case 2:
  12.                 Zig_left(no, no.getPai());
  13.                 break;
  14.             case 3:
  15.                 ZigZig_right(no, no.getPai(), no.getPai().getPai());
  16.                 break;
  17.             case 4:
  18.                 ZigZig_left(no, no.getPai(), no.getPai().getPai());
  19.                 break;
  20.             case 5:
  21.                 ZigZag_right(no, no.getPai(), no.getPai().getPai());
  22.                 break;
  23.             case 6:
  24.                 ZigZag_left(no, no.getPai(), no.getPai().getPai());
  25.                 break;
  26. //          default :
  27. //              return;
  28.             }
  29.         }
  30.     }
  31.    
  32.     /*
  33.      *
  34.      * -1 - Condicoes Base Falhas
  35.      * 0 - Raiz
  36.      * 1 - Zig Right
  37.      * 2 - Zig Left
  38.      * 3 - ZigZig Right
  39.      * 4 - ZigZig left
  40.      * 5 - ZigZag Right
  41.      * 6 - ZigZag Left
  42.      */
  43.    
  44.     private int whichZig(No no1, No no2, No no3) {
  45.        
  46.         // Condicoes Bases No1 Filho de No2 e No2 Filho de No3
  47.        
  48.         if (!no1.equals(no2.getEsquerda()) && !no1.equals(no2.getDireita()))
  49.             return -1;
  50.        
  51.         if (no3 != null && !no2.equals(no3.getEsquerda()) && !no2.equals(no3.getDireita()))
  52.             return -1;
  53.        
  54.         // Verifica Zig
  55.        
  56.         if (no3 == null) {
  57.             // Eh Zig
  58.            
  59.             if (no1.equals(no2.getEsquerda()))
  60.                 return 1;
  61.             else
  62.                 return 2;
  63.            
  64.         }
  65.        
  66.         // Verifica Rotacoes Duplas
  67.        
  68.         if (no1.equals(no2.getEsquerda())) {
  69.            
  70.             if (no2.equals(no3.getEsquerda()))
  71.                 return 3;
  72.             else
  73.                 return 5;
  74.            
  75.            
  76.         } else {
  77.            
  78.             if (no2.equals(no3.getDireita()))
  79.                
  80.                 return 4;
  81.             else
  82.                 return 6;
  83.         }
  84.     }
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement