HuTcHx

Ancetre

May 31st, 2012
29
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
text 2.02 KB | None | 0 0
  1. ###############################
  2.  
  3. Ancetre : Aftab Kanjiani 31/05/2011
  4.  
  5. ##############################
  6.  
  7.  
  8. // Parcours par niveau ,
  9. // avoir une variable niveau , qu'on incrémente à chaque boucle
  10. // Utilisez une structure avec le noeud et le niveau
  11. // et à chaque fois dans ma boucle je vais editez ma structure.
  12. //
  13. // Récupéré le niveau de l' ancètre pour que ma formule fonctionne à l'aide d'une liste.
  14.  
  15. Structure noeudAncetre
  16.  
  17. noeud : Noeud<Obj>
  18. listeIdPère : Liste <noeudAncetre>
  19. niveau : entier
  20.  
  21.  
  22. fin structure
  23.  
  24. module degréParenté(arbre : ArbreNaire<Obj>, a : entier, b : entier) --> entier
  25.  
  26. file : File<Noeud<noeudAncetre>> <- nouvelle FileListe()<noeudAncetre>
  27. cptNiveau : entier <-0
  28.  
  29. trouveA : booleen <- FAUX
  30. trouveB : booleen <- FAUX
  31.  
  32. niveauA , niveauB : entier <- 0
  33.  
  34. na , noeudA , noeudB : noeudAncetre
  35. na.niveau = cptNiveau
  36. na.noeud = arbre.getRacine()
  37.  
  38. ajouter(file,na)
  39.  
  40. TANT QUE NON file.estVide() FAIRE
  41.  
  42. na <- file.remove() // traitement du noeud
  43.  
  44.  
  45. SI na.noeud.getID() = a ALORS
  46. trouveA = VRAI
  47. niveauA <- na.niveau
  48. FIN SI
  49.  
  50. SI na.noeud.getID() = b ALORS
  51. trouveB = VRAI
  52. niveauB <- na.niveau
  53. FIN SI
  54.  
  55. cptNiveau++
  56.  
  57. POUR i de 1 à na.noeud.getNbFils() FAIRE
  58. na.listeIdPère.add(na.noeud)
  59. na.noeud <- getFils(i)
  60. na.niveau <- cptNiveau
  61.  
  62. ajouter(file,na)
  63. FIN POUR
  64.  
  65. FIN TANT QUE
  66.  
  67. SI (trouveA ET NON trouveB) OU (NON trouveA ET trouveB) ALORS
  68.  
  69. return -1
  70.  
  71. FIN SI
  72.  
  73.  
  74. return niveauTotal(noeudA,noeudB)
  75.  
  76. fin module
  77.  
  78. module niveauTotal(nouedA,noeudB : noeudAncetre) -> entier
  79.  
  80. SI (noeudA.niveau = noeudB.niveau) ALORS
  81. return 0
  82. FIN SI
  83.  
  84. i , j , nivAncetre : entier
  85.  
  86. POUR i de 1 à n FAIRE
  87. POUR j de 1 à n FAIRE
  88.  
  89. SI noeudA.listeIdPère.get(i).getID() = noeudB.listeIdPère.get(j).getID ALORS
  90. nivAncetre <- noeudA.listePère.get(i).niveau
  91. FIN SI
  92.  
  93. FIN POUR
  94. FIN POUR
  95.  
  96. return (noeudA.niveau-nivAncetre) + (noeudB.niveau-nivAncetre)
  97.  
  98. fin module
Advertisement
Add Comment
Please, Sign In to add comment