Given level order traversal of a Binary Tree, check if the Tree is a Min-Heap
Last Updated : 23 Jul, 2025
Given the level order traversal of a Complete Binary Tree, determine whether the Binary Tree is a valid Min-Heap
Examples:
Input: level = [10, 15, 14, 25, 30] Output: True Explanation: The tree of the given level order traversal is
Given Tree is Min-Heap
We see that each parent has a value less than its child, and hence satisfies the min-heap property Input: level = [30, 56, 22, 49, 30, 51, 2, 67] Output: False Explanation: The tree of the given level order traversal is
Given Tree is not min-heap
We observe that at level 0, 30 > 22, and hence min-heap property is not satisfied
To verify the heap property, we ensure that each non-leaf node (parent) is smaller than its children. For every parent at index i, we compare it with its left child at 2*i + 1 and, if present, its right child at 2*i + 2. If a parent has only one child, we check against the left child alone.
C++
#include<bits/stdc++.h>usingnamespacestd;// Checks if the given level order traversal represents a Min HeapboolisMinHeap(vector<int>level){intn=level.size();// Verify each parent node is smaller than its childrenfor(inti=(n/2-1);i>=0;i--){if(level[i]>level[2*i+1])returnfalse;if(2*i+2<n&&level[i]>level[2*i+2])returnfalse;}returntrue;}// Driver codeintmain(){vector<int>level={10,15,14,25,30};cout<<(isMinHeap(level)?"True":"False");return0;}
Java
// Java program to check if a given tree is a Min HeappublicclassGfG{// Checks if the given level order traversal represents a Min HeapstaticbooleanisMinHeap(int[]level){intn=level.length-1;// Verify each parent node is smaller than its childrenfor(inti=(n/2-1);i>=0;i--){if(level[i]>level[2*i+1])returnfalse;if(2*i+2<n&&level[i]>level[2*i+2])returnfalse;}returntrue;}// Driver codepublicstaticvoidmain(String[]args){int[]level={10,15,14,25,30};System.out.println(isMinHeap(level)?"True":"False");}}
Python
# Checks if the given level order traversal represents a Min HeapdefisMinHeap(level):n=len(level)# Verify each parent node is smaller than its childrenforiinrange((n//2)-1,-1,-1):iflevel[i]>level[2*i+1]:returnFalseif2*i+2<nandlevel[i]>level[2*i+2]:returnFalsereturnTrue# Driver codeif__name__=='__main__':level=[10,15,14,25,30]print("True"ifisMinHeap(level)else"False")
C#
usingSystem;classGfG{// Checks if the given level order traversal represents a Min HeappublicstaticboolisMinHeap(int[]level){intn=level.Length-1;// Verify each parent node is smaller than its childrenfor(inti=(n/2-1);i>=0;i--){if(level[i]>level[2*i+1]){returnfalse;}if(2*i+2<n&&level[i]>level[2*i+2]){returnfalse;}}returntrue;}publicstaticvoidMain(string[]args){int[]level={10,15,14,25,30};Console.WriteLine(isMinHeap(level)?"True":"False");}}
JavaScript
// Checks if the given level order traversal represents a Min HeapfunctionisMinHeap(level){varn=level.length-1;// Check if each parent node is smaller than its childrenfor(vari=(n/2-1);i>=0;i--){if(level[i]>level[2*i+1]){returnfalse;}if(2*i+2<n&&level[i]>level[2*i+2]){returnfalse;}}returntrue;}// Driver codevarlevel=[10,15,14,25,30];console.log(isMinHeap(level)?"True":"False");