Skip to main content
`Ctrl`+`K`

# skbio.tree.TreeNode.bifurcate

TreeNode.bifurcate(insert_length=None, include_self=True, uncache=True)

  Convert the tree into a bifurcating tree.

  All nodes that have more than two children will have additional intermediate nodes inserted to ensure that every node has only two children.

  Parameters:
    insert_length int, optional

      The branch length assigned to all inserted nodes.

    include_self bool, optional

      If False, will not convert the current node. This is useful for keeping an unrooted tree unrooted. Default is True.

      Added in version 0.6.3.

    uncache bool, optional

      Whether to clear caches of the tree if present (default: True). See `details`.

      Added in version 0.6.3.

  See also

  `prune`
  `is_bifurcating`

  Notes

  This method does not modify single-child nodes. These nodes can be collapsed using `prune` prior to this method to create a strictly bifurcating tree.

  This method modifies the subtree under the current node.

  Examples

      >>> from skbio import TreeNode
      >>> tree = TreeNode.read(["((a,b,g,h)c,(d,e)f)root;"])
      >>> print(tree.ascii_art())
                          /-a
                         |
                         |--b
                /c-------|
               |         |--g
               |         |
      -root----|          \-h
               |
               |          /-d
                \f-------|
                          \-e

      >>> tree.bifurcate()
      >>> print(tree.ascii_art())
                          /-h
                /c-------|
               |         |          /-g
               |          \--------|
               |                   |          /-a
      -root----|                    \--------|
               |                              \-b
               |
               |          /-d
                \f-------|
                          \-e