Height of a complete binary tree (or Heap) with N nodes

Consider a Binary Heap of size N. We need to find height of it.

Examples :

Input : N = 6
Output : 2
        ()
      /    \
     ()     ()
    /  \    /
  ()    () ()

Input : N = 9
Output :
        ()
      /    \
     ()     ()
    /  \    /  \
  ()    () ()   ()
 / \
()  ()

Let the size of heap be N and height be h
If we take few examples, we can notice that the value of h in a complete binary tree is ceil(log2(N+1)) – 1.
Examples :

 N    h
---------
 1    0
 2    1
 3    1
 4    2
 5    2
 .....
 .....

C++

// CPP program to find height of complete
// binary tree from total nodes.
#include <bits/stdc++.h>
using namespace std;
  
int height(int N)
{
    return ceil(log2(N + 1)) - 1;
}
  
// driver node
int main()
{
    int N = 6;
    cout << height(N);
    return 0;
}

Java

// Java program to find height
// of complete binary tree
// from total nodes.
import java.lang.*;
  
class GFG {
      
    // Function to calculate height 
    static int height(int N)
    {
        return (int)Math.ceil(Math.log(N + 
                    1) / Math.log(2)) - 1;
    }
  
    // Driver Code
    public static void main(String[] args)
    {
        int N = 6;
        System.out.println(height(N));
    }
}
  
// This code is contributed by
// Smitha Dinesh Semwal

Python 3

# Python 3 program to find 
# height of complete binary
# tree from total nodes.
import math
def height(N):
    return math.ceil(math.log2(N + 1)) - 1
  
# driver node
N = 6
print(height(N))
  
# This code is contributed by
# Smitha Dinesh Semwal

C#

// C# program to find height
// of complete binary tree
// from total nodes.
using System;
  
class GFG {
    static int height(int N)
    {
        return (int)Math.Ceiling(Math.Log(N 
                   + 1) / Math.Log(2)) - 1;
    }
  
    // Driver node
    public static void Main()
    {
        int N = 6;
        Console.Write(height(N));
    }
}
  
// This code is contributed by
// Smitha Dinesh Semwal

PHP

<?php
// PHP program to find height
// of complete binary tree
// from total nodes.
  
function height($N)
{
    return ceil(log($N + 1, 2)) - 1;
}
  
// Driver Code
$N = 6;
echo height($N);
  
// This code is contributed by aj_36
?>

Output :

2


My Personal Notes arrow_drop_up

Maths is the language of nature

If you like GeeksforGeeks and would like to contribute, you can also write an article using contribute.geeksforgeeks.org or mail your article to contribute@geeksforgeeks.org. See your article appearing on the GeeksforGeeks main page and help other Geeks.

Please write comments if you find anything incorrect, or you want to share more information about the topic discussed above.





Practice Tags :
Article Tags :

Please write to us at contribute@geeksforgeeks.org to report any issue with the above content.

Recommended Posts:



1.7 Average Difficulty : 1.7/5.0
Based on 4 vote(s)






User Actions