Just FYI not a critical error:
The solution code for the deserialization on the first implementation is wrong. The book has the final implementation after the optimization. I realized this as I read on but wasn’t apparent why I was getting the wrong console output compared to the book.
Book Implementation: fun deserialize(list: MutableList<T?>): BinaryNode<T?>? { val rootValue = list.removeAt(list.size - 1) ?: return null
correct Implementation:fun deserialize(list: MutableList<T?>): BinaryNode<T?>? { val rootValue = list.removeAt(0) ?: return null
also a small error on the deserializationOptimized method’s return type:
Book Implementation: fun deserializeOptimized(list: MutableList<T?>): BinaryNode<T>?
correct Implementation:fun deserializeOptimized(list: MutableList<T?>): BinaryNode<T?>?