OT: Binary tree logarithms properties

Aaron Brady castironpi at gmail.com
Thu Dec 18 05:52:43 EST 2008


On Dec 18, 4:34 am, Mr.SpOOn <mr.spoo... at gmail.com> wrote:
> 2008/12/17 Terry Reedy <tjre... at udel.edu>:
>
> > Nodes only have single number indexes if you arrange them linearly. Then the
> > index depends on how you arrange them, whether you start the array indexes
> > with 0 or 1, and whether you start the level numbers with 0 or 1.  Call the
> > breadth-first sequence bf.  Then the 1-based slice for 1-first level k is
> > bf[2**(k-1):2**k)].  Again, proof by induction.
>
> Yes, I was referring to the heap numeration.
> Anyway, Francesco Guerrieri answered me in a private message and
> explained me the formula.
>
> But actually I was searching for other similar properties.

A tree with one node A, can have two children

A CD

C and D can each have two children

A CD  EF GH

Taking 'x' to be the level number, each level can have 2**x members.
Each member is a child of the higher level.  You see the pattern, 1,
2, 4... then 8, 16, etc.

The total number of nodes at a level is 2**x plus its earlier levels.

2**x + 2**(x-1) + ... + 2**0.

= 2**(x+1) - 1.

Taking the log2 of both sides, we have:

log2 count_of_nodes = log2( 2**(x+1) - 1 )

Better yet:

log2 ( count_of_nodes + 1 ) = log2( 2**(x+1) )
log2 ( count_of_nodes + 1 ) = x+1




More information about the Python-list mailing list