public Tree<T> findChild(T otherLabel) throws InvalidOperationException {

		// %%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
		// Implement this method.
		// %%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
		
		if (otherLabel == null){
			throw new InvalidOperationException("Can't search for null");
		}
		else if(firstChild == null){
			return null;
		}
		else{
			//set variables for firstChild and the next sibling
			Tree<T> N = firstChild;
			Tree<T> Next = firstChild.getNextSibling();
			//while a child exists 
			while(N!= null){
				//check if label equals otherLabel
				if(N.getLabel().equals(otherLabel)){
					//if so, return the result
					System.out.println(N);
					return N;
				}
				//if no more siblings, means we searched through the immediate children
				else if (Next == null){
					//return null result
					return null;
				}
				//if there are more siblings set N to nextsibling and next to the nextnextsibling
				else{
					N= Next;
					Next= Next.getNextSibling();
				}
		}
		return null;
		}
	}