This document discusses binary search trees (BSTs). It begins by defining a BST as a binary tree where every node's left subtree contains values less than the node's value and the right subtree contains greater values. It describes BST operations like insertion, traversal, and discussing worst-case performance of a naive insertion algorithm. Later it presents alternative implementations of BSTs using interfaces and structural recursion rather than null pointers.