The purpose of this thesis is to research the Hu-Tucker algorithm for building Optimal Alphabetic Binary Search Trees (OABST). We designed two implementations: one running in $O(n^2)$ and another running in $O(n\log n)$ time; evaluated the performance of the algorithm for practical applications; and the break-even point of the two implementations. We compared the performance of the OABST to the compression ratio of two popular implementations of Lempel-Ziv algorithm (gzip and compress). We experimentally evaluated the optimality of the OABST against the optimality of an Optimal Binary Tree, built using the Huffman algorithm. The experiments showed that the compression ratio of OABST is very close (0.09 bits per word) to that of OBT, however the OABST can be used during both the encoding and decoding processes while the OBT require additional mapping mechanism for the decoding phase.