Jump to content

Left-child right-sibling binary tree

From Wikipedia, the free encyclopedia
This is an old revision of this page, as edited by Dexbot (talk | contribs) at 05:33, 29 August 2015 (Bot: Deprecating Template:Cite doi and some minor fixes). The present address (URL) is a permanent link to this revision, which may differ significantly from the current revision.
6-ary tree represented as a binary tree

Every multi-way or k-ary tree structure studied in computer science admits a representation as a binary tree, which goes by various names including child-sibling representation,[1] left-child, right-sibling binary tree,[2] doubly chained tree or filial-heir chain.[3]

In a binary tree that represents a multi-way tree T, each node corresponds to a node in T and has two pointers: one to the node's first child, and one to its next sibling in T. The children of a node thus form a singly-linked list. To find a node n's k'th child, one needs to traverse this list:

procedure kth-child(n, k):
    child ← n.child
    while k ≠ 0 and child ≠ nil:
        child ← child.next-sibling
        k ← k − 1
    return child  // may return nil
A trie implemented as a doubly chained tree: vertical arrows are child pointers, dashed horizontal arrows are next-sibling pointers. Tries are edge-labeled, and in this representation the edge labels become node labels on the binary nodes.

The process of converting from a k-ary tree to an LC-RS binary tree is sometimes called the Knuth 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 by Sussenguth in 1963.[5]

References

  1. ^ Fredman, Michael L.; Sedgewick, Robert; Sleator, Daniel D.; Tarjan, Robert E. (1986). "The pairing heap: a new form of self-adjusting heap" (PDF). Algorithmica. 1 (1): 111–129. doi:10.1007/BF01840439.
  2. ^ Cormen, Thomas H.; Leiserson, Charles E.; Rivest, Ronald L.; Stein, Clifford (2001) [1990]. Introduction to Algorithms (2nd ed.). MIT Press and McGraw-Hill. pp. 214–217. ISBN 0-262-03293-7.
  3. ^ Public Domain This article incorporates public domain material from Paul E. Black. "Binary tree representation of trees". Dictionary of Algorithms and Data Structures. NIST.
  4. ^ Computer Data Structures. John L. Pfaltz.
  5. ^ Sussenguth, Edward H. (1963). "Use of tree structures for processing files". Communications of the ACM. 6 (5): 272–279. doi:10.1145/366552.366600.