public Iterator<E> iterator(){
    	final LinkedList<Node<E>> liste = new LinkedList<Node<E>>();
    	if(!(root.isEmpty())){
    		liste.push((Node<E>)root);
        	int i = 0;
        	while(!(liste.get(i).smaller.isEmpty())){
        		liste.push((Node<E>) liste.get(0).smaller);
        	}
    	}
    	
    	return new Iterator<E>(){
    		private LinkedList<Node<E>> nodes = liste;
    		
    		public boolean hasNext(){
    			if(nodes.isEmpty())
    				return false;
    			else
    				return true;
    		}
    		
    		public E next(){
    			Node<E> lastNode = nodes.pop();
    			
    			if(lastNode == null){
    				throw new NoSuchElementException("Pas d'éléments suivant");
    			}
    			
    			if(!(lastNode.bigger.isEmpty())){
    				nodes.push((Node<E>) lastNode.bigger);
    			}
    			
    			return lastNode.value;
    		}
    		
    		public void remove(){
    			throw new UnsupportedOperationException("Méthode non-implémentée");
    		}
    	};
    }