public List<LinkedNode<T>> removeSubNode(T key) {
		if (key == null)
			return null;
		List<LinkedNode<T>> searchResult = new ArrayList<LinkedNode<T>>();
		List<LinkedNode<T>> removeResult = new ArrayList<LinkedNode<T>>();
		for (LinkedNode<T> node : subNodes) {
			if (key.equals(node.getValue())) {
				searchResult.add(node);
			}
		}
		for (int i = searchResult.size() - 1; i > -1; i--) {
			removeResult.add(this.removeSubNodeByIndex(searchResult.get(i)
					.getIndex()));
		}
		return removeResult;
	}