
Everymulti-way ork-ary tree structure studied incomputer science admits a representation as abinary tree, which goes by various names includingchild-sibling representation,[1]left-child, right-sibling binary tree,[2]doubly chained tree orfilial-heir chain.[3]
In a binary tree that represents a multi-way treeT, each node corresponds to a node inT and has twopointers: one to the node's first child, and one to its next sibling inT. The children of a node thus form asingly-linked list. To find a noden'sk'th child, one needs to traverse this list:
procedure kth-child(n, k): child ← n.childwhile k ≠ 0and child ≠ nil: child ← child.next-sibling k ← k − 1return child// may return nil

The process of converting from a k-ary tree to an LC-RS binary tree is sometimes called theKnuth transform.[4] To form a binary tree from an arbitrary k-ary tree by this method, the root of the original tree is made the root of the binary tree. Then, starting with the root, each node's leftmost child in the original tree is made its left child in the binary tree, and its nearest sibling to the right in the original tree is made its right child in the binary tree.
Doubly chained trees were described byEdward H. Sussenguth in 1963.[5]
Processing a k-ary tree to LC-RS binary tree, every node is linked and aligned with the left child, and the next nearest is a sibling. For example, we have a ternary tree below:
1 /|\ / | \ / | \ 2 3 4 / \ | 5 6 7 / \ 8 9
We can re-write it by putting the left child node to one level below its parents and by putting the sibling next to the child at the same level – it will be linear (same line).
1 / / / 2---3---4 / / 5---6 7 / 8---9
We can transform this tree to a binary tree by turning each sibling 45° clockwise.[6]
1 / 2 / \ 5 3 \ \ 6 4 / 7 / 8 \ 9
The LCRS representation is more space-efficient than a traditional multiway tree, but comes at the cost that looking up a node's children by index becomes slower. Therefore, the LCRS representation is preferable if
Case (1) applies when large multi-way trees are necessary, especially when the trees contains a large set of data. For example, if storing aphylogenetic tree, the LCRS representation might be suitable.
Case (2) arises in specialized data structures in which the tree structure is being used in very specific ways. For example, many types of heap data structures that use multi-way trees can be space optimized by using the LCRS representation. (Examples includeFibonacci heaps,pairing heaps andweak heaps.) The main reason for this is that in heap data structures, the most common operations tend to be
Operation (1) it is very efficient. In LCRS representation, it organizes the tree to have a right child because it does not have a sibling, so it is easy to remove the root.
Operation (2) it is also efficient. It is easy to join two trees together.[7]