In computer science, a binary tree is a tree data structure where each node has at most two children, called the left child and the right child. A recursive definition using only set theory concepts is that a non-empty binary tree is a tuple (L, S, R), where L and R are binary trees or the empty set and S is the simple set. (singleton set).[1] Some authors allow binary trees to also be empty sets.[2] From a graph theory perspective, a binary (and K-ary) tree as defined here is actually arborescence.[3] The binary tree could therefore be called bifurcating arborescence[3]—a term that appeared in very old programming books,[4] before modern computer science terminology prevailed. . A binary tree can also be understood as an undirected rather than directed graph, in which case a binary tree is a rooted and ordered tree[5] Some authors use the term binary tree root instead of binary tree to emphasizes the fact that trees have roots, but as defined above, binary trees always have roots.[6] A binary tree is a special case of a K-ary tree, where k equals 2.