ヒープの深さと各深さにおける要素数を求める方法について調べていますが、関数などを見つけることができず、どのように求めるべきかわかりません。

import heapq
a = [6, 3, 2, 4, 5]
heapq.heapify(a)

例えば上記の場合、手で図を描いてみると、ヒープの深さ(0始まりとする)は最大で2となり、各深さにおける要素数は深さ0で1, 深さ1で2、深さ2で2となります。
今回の例だと要素数5のヒープということができると思います。

heapsort()やheapq.heappush(heap, item)、heapq.heappop(heap)などで、ソートや出し入れを行うことができますが、要素数nのヒープが与えられたときに、図を描かずにプログラムでヒープの深さと各深さにおける要素数を求める方法はあるのでしょうか。