you can use the method IFsiDirectoryItem::AddDirectory of the IFsiDirectoryItem interface to add a directory to the file system image on the optical media; and after that, retrieve it with IFsiDirectoryItem::get_Item method.
For example: Instead of
rootItem.AddTree(sourceDirectory,includeBaseDirectory);
Replace with something like:
rootItem.AddDirectory(directoryName);
rootItem.get_Item(directoryName, newDirItem);
You can create multiple directory levels (just call AddDirectory on the appropriate directory item instead of rootItem).
Also, you may want to reuse existing directories on optical media if the directories already exist. You can do that by taking into account the error IMAPI_E_DUP_NAME ((HRESULT)0xC0AAB112L) returned when trying to get the directory...