public boolean add(String S){
		Node currNode;
		
		//If the DLB is empty creates a link list of children followed by a Node with a sentinel character. Sets the root to the first character
		//of this word.
		
		if(DLBStart == null){
			Node tempNode = new Node(S.charAt(0),null,null);
			DLBStart = tempNode;
			
			for(int i = 1; i<S.length(); i++){
				currNode = new Node(S.charAt(i),null,null);
				tempNode.child = currNode;
				tempNode = currNode;
			}
			currNode = new Node('^', null, null);
			tempNode.child = currNode;
			
			return true;
		}
		
		//If DLB is not empty, then start following the path of the given DLB until it ends. Once it ends
		//add the new word.
		
		else if(DLBStart != null){
			currNode = DLBStart;
			int i = 0;
			
			while(currNode != null && i < S.length()){
				if(currNode.data == S.charAt(i)){
					if(currNode.child != null){
						currNode = currNode.child;
						i++;
					}
					
					else{
						Node tempNode = new Node(S.charAt(i),null,null);
						currNode.child = tempNode;
						return(addFinish(tempNode, S, i+1));
					}
				}
				
				else{
					if(currNode.sibling != null)
						currNode = currNode.sibling;
					
					
					else if (currNode.sibling == null){
						currNode.sibling = new Node(S.charAt(i),null,null);
						currNode = currNode.sibling;
						return(addFinish(currNode,S,i+1));
					}
				}
			}
		}
		return true;
	}