Advertisement
Guest User

Untitled

a guest
Apr 29th, 2016
54
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
text 2.71 KB | None | 0 0
  1. template <class T>
  2. void BinarySearchTree<T>::insert(T element,int linia, int posicio, Position<T>* node){
  3. if (arrel == nullptr){//si l'arbre es buit, tenint en compte que no tenim delete aixo no passara perque
  4. //quan iniciem l'arbre ja creem l'arrel pero si implementesim el delete seria util aquesta condicio
  5. Position<T>* nouNode = new Position<T>(element,linia,posicio);//creem nou node
  6. arrel = nouNode;//Aquest nou node es l'arrel
  7. nouNode->setParent(nullptr);//el seu pare es null
  8. numNodes++;//Augmentem el nombre de nodes
  9. }else{
  10. if(!search(element,arrel)){
  11.  
  12.  
  13. if (element < node->getElement() && node->getLeft() != nullptr){//si l'element a inserir es mes petit i l'esquerra no es null
  14. return insert(element,linia, posicio, node->getLeft());//fem recursivitat cap a l'esquerra
  15. }
  16. if (element > node->getElement() && node->getRight() != nullptr){//si l'element a inserir es mes gran i el dret no es null
  17. return insert(element,linia, posicio, node->getRight());//fem recursivitat cap a la dreta
  18. }
  19. if (element < node->getElement() && node->getLeft() == nullptr){//si l'element es mes petit pero l'esquerra es null
  20. Position<T>* nouNode = new Position<T>(element, linia, posicio);//creem el nou node a afegir
  21. nouNode->setParent(node);//posem com a pare del nou node el node pasat per parametre
  22. node->setLeft(nouNode);//posem com a fill esquerre el nou node
  23. numNodes++;//Augmentem el nombre de nodes
  24. }
  25. if (element > node->getElement() && node->getRight() == nullptr){//si l'element es ems gran pero el dret es null
  26. Position<T>* nouNode = new Position<T>(element, linia, posicio);//creem el nou node a afegir
  27. nouNode->setParent(node);//posem com a pare del nou node el node passat per parametre
  28. node->setRight(nouNode);//posem com a fill dret el nou node
  29. numNodes++;//augmentem el nombre de nodes
  30. }
  31. }else{
  32.  
  33. bool repetit=false;
  34. Position<string>* node = searchElement(element,arrel);
  35. vector<Occurence*> valors=node->getTotal();
  36.  
  37. int i=0;
  38. while(!repetit && i<valors.size()){
  39. for(int idx = 0; idx < valors.size(); idx++){
  40. repetit=(valors.at(idx).getLinia()==linia)&&(valors.at(idx).getPosicio());
  41. }
  42. }
  43.  
  44. if(!repetit){
  45. node->setValues(linia, posicio);
  46. }}
  47.  
  48. }
  49. }
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement