A 2-4 tree is a rooted tree with the following properties:
 , then it has at least
, then it has at least
   leaves.  In other words,
 leaves.  In other words,
  
 
 .
.
  
Adding a leaf to a 2-4 tree is easy (see Figure 9.2).  If we
want to add a leaf 
 as the child of some node
 as the child of some node 
 on the second-last
level, then we simply make
 on the second-last
level, then we simply make 
 a child of
 a child of 
 .  This certainly maintains
the height property, but could violate the degree property;  if
.  This certainly maintains
the height property, but could violate the degree property;  if 
 had four children prior to adding
had four children prior to adding 
 , then
, then 
 now has five children.
In this case, we split
 now has five children.
In this case, we split
 into two nodes,
 into two nodes, 
 and
 and 
 ', having
two and three children, respectively.
But now
', having
two and three children, respectively.
But now 
 ' has no parent,
so we recursively make
' has no parent,
so we recursively make 
 ' a child of
' a child of 
 's parent.  Again, this may
cause
's parent.  Again, this may
cause 
 's parent to have too many children in which case we split it.
This process goes on until we reach a node that has fewer than four children,
or until we split the root,
's parent to have too many children in which case we split it.
This process goes on until we reach a node that has fewer than four children,
or until we split the root, 
 , into two nodes
, into two nodes 
 and
 and 
 .  In the
latter case, we make a new root that has
.  In the
latter case, we make a new root that has 
 and
 and 
 as children.
This simultaneously increases the depth of all leaves and so maintains
the height property.
 as children.
This simultaneously increases the depth of all leaves and so maintains
the height property.
| 
 | 
Since the height of the 2-4 tree is never more than 
 , the
process of adding a leaf finishes after at most
, the
process of adding a leaf finishes after at most 
 steps.
 steps.
Removing a leaf from a 2-4 tree is a little more tricky (see
Figure 9.3).  To remove a leaf 
 from its parent
 from its parent 
 , we
just remove it.  If
, we
just remove it.  If 
 had only two children prior to the removal of
 had only two children prior to the removal of 
 ,
then
,
then 
 is left with only one child and violates the degree property.
 is left with only one child and violates the degree property.
| 
 | 
To correct this, we look at 
 's sibling,
's sibling, 
 .  The node
.  The node 
 is
sure to exist since
 is
sure to exist since 
 's parent had at least two children.  If
's parent had at least two children.  If 
 has three or four children, then we take one of these children from
has three or four children, then we take one of these children from 
 and give it to
and give it to 
 . Now
. Now 
 has two children and
 has two children and 
 has two or three
children and we are done.
 has two or three
children and we are done.
On the other hand, if 
 has only two children, then we merge
 has only two children, then we merge
 and
 and 
 into a single node,
 into a single node, 
 , that has three children.  Next we
recursively remove
, that has three children.  Next we
recursively remove 
 from the parent of
 from the parent of 
 .  This process ends
when we reach a node,
.  This process ends
when we reach a node, 
 , where
, where 
 or its sibling has more than two
children, or when we reach the root.  In the latter case, if the root
is left with only one child, then we delete the root and make its child
the new root.  Again, this simultaneously decreases the height of every
leaf and therefore maintains the height property.
 or its sibling has more than two
children, or when we reach the root.  In the latter case, if the root
is left with only one child, then we delete the root and make its child
the new root.  Again, this simultaneously decreases the height of every
leaf and therefore maintains the height property.
Again, since the height of the tree is never more than 
 ,
the process of removing a leaf finishes after at most
,
the process of removing a leaf finishes after at most 
 steps.
 steps.
opendatastructures.org