Binary trees are a non-linear data structure where each node has zero, one, or two child nodes. They are commonly used to represent hierarchical relationships. A binary tree has a root node at the top with child nodes below it. Binary trees can be empty or consist of a root node and left and right subtrees, which are also binary trees. They allow for efficient search, insert, and delete operations and can be represented using arrays or linked lists.