Posted on by Kalkicode
Code Heap

Traversal binary min heap array

Here given code implementation process.

/*
  C Program 
  Traversal Binary min heap array
*/
#include <stdio.h>

void preorder(int node[],int size,int root)
{

  if(root<size)
  {
    printf("%3d",node[root] );
    preorder(node, size, 2*root+1);

    preorder(node, size, 2*root+2);
  }

}
void inorder(int node[],int size,int root)
{

  if(root<size)
  {
    // (2*root+1) indicating the left child
    inorder(node, size, 2*root+1);
    printf("%3d",node[root] );

    // (2*root+2) indicating the right child
    inorder(node, size, 2*root+2);
  }

}
void postorder(int node[],int size,int root)
{

  if(root<size)
  {
    postorder(node, size, 2*root+1);

    postorder(node, size, 2*root+2);

    printf("%3d",node[root] );
  }

}
int main(){

  /* Min heap
  -----------------------
              1
           /      \
          5        6
         /   \    / \
        9     7  8   10
       / \   /    
      13 12 11    
           
  */
  //min heap array
  int node[]={1,5,6,9,7,8,10,13,12,11};
  
  //get the size of array elements
  int size = sizeof(node)/sizeof(node[0]);
  
  printf("Preorder\n");
  preorder(node,size,0); 
  printf("\nInorder\n");
  inorder(node,size,0); 
  printf("\nPostorder\n");
  postorder(node,size,0); 
  return 0;
}

Output

Preorder
  1  5  9 13 12  7 11  6  8 10
Inorder
 13  9 12  5 11  7  1  8  6 10
Postorder
 13 12  9 11  7  5  8 10  6  1
/*
 C++ Program
 Traversal binary min heap array
*/

#include<iostream>

using namespace std;
class MinHeap {
  public:
    void preorder(int node[], int size, int root) {
      if (root < size) {
        cout << "  " << node[root];
        this->preorder(node, size, 2 *root + 1);
        this->preorder(node, size, 2 *root + 2);
      }
    }
  void inorder(int node[], int size, int root) {
    if (root < size) {
      this->inorder(node, size, 2 *root + 1);
      cout << "  " << node[root];
      this->inorder(node, size, 2 *root + 2);
    }
  }
  void postorder(int node[], int size, int root) {
    if (root < size) {
      this->postorder(node, size, 2 *root + 1);
      this->postorder(node, size, 2 *root + 2);
      cout << "  " << node[root];
    }
  }
};
int main() {
  MinHeap obj;
  /* Min heap
  -----------------------
              1
           /      \
          5        6
         /   \    / \
        9     7  8   10
       / \   /    
      13 12 11    
           
  */
  int arr[] = {1, 5, 6, 9, 7, 8, 10, 13, 12, 11};
  int size = sizeof(arr)/sizeof(arr[0]);
  cout << "Preorder\n";
  obj.preorder(arr, size, 0);
  cout << "\nInorder\n";
  obj.inorder(arr, size, 0);
  cout << "\nPostorder\n";
  obj.postorder(arr, size, 0);
  return 0;
}

Output

Preorder
  1  5  9 13 12  7 11  6  8 10
Inorder
 13  9 12  5 11  7  1  8  6 10
Postorder
 13 12  9 11  7  5  8 10  6  1
/*
  Java Program 
  Traversal binary min heap array
*/
public class MinHeap {
  
  public void preorder(int []node,int size,int root)
  {

    if(root<size)
    {
      System.out.print("  "+node[root] );
      preorder(node, size, 2*root+1);

      preorder(node, size, 2*root+2);
    }

  }
  public void inorder(int []node,int size,int root)
  {

    if(root<size)
    {
      inorder(node, size, 2*root+1);
      System.out.print("  "+node[root] );
      inorder(node, size, 2*root+2);
    }

  }
  public void postorder(int []node,int size,int root)
  {

    if(root<size)
    {
      postorder(node, size, 2*root+1);

      postorder(node, size, 2*root+2);

      System.out.print("  "+node[root] );
    }

  }

  public static void main(String[] args) {

    MinHeap obj = new MinHeap();
    /* Min heap
    -----------------------
                1
             /      \
            5        6
           /   \    / \
          9     7  8   10
         / \   /    
        13 12 11    
             
    */
    //Min heap array
    int[] arr = {1,5,6,9,7,8,10,13,12,11};
   
    int size = arr.length;


    System.out.print("Preorder\n");
    obj.preorder(arr,size,0); 
    System.out.print("\nInorder\n");
    obj.inorder(arr,size,0); 
    System.out.print("\nPostorder\n");
    obj.postorder(arr,size,0); 

  }
}

Output

Preorder
  1  5  9 13 12  7 11  6  8 10
Inorder
 13  9 12  5 11  7  1  8  6 10
Postorder
 13 12  9 11  7  5  8 10  6  1
/*
  C# Program 
  Traversal binary min heap array
*/
using System;
public class MinHeap {

	public void preorder(int []node,int size,int root)
	{

		if(root<size)
		{
			Console.Write("  "+node[root] );
			preorder(node, size, 2*root+1);

			preorder(node, size, 2*root+2);
		}

	}
	public void inorder(int []node,int size,int root)
	{

		if(root<size)
		{
			inorder(node, size, 2*root+1);
			Console.Write("  "+node[root] );
			inorder(node, size, 2*root+2);
		}

	}
	public void postorder(int []node,int size,int root)
	{

		if(root<size)
		{
			postorder(node, size, 2*root+1);

			postorder(node, size, 2*root+2);

			Console.Write("  "+node[root] );
		}

	}

	public static void Main(String[] args) {

		MinHeap obj = new MinHeap();
		/* Min heap
    -----------------------
                1
             /      \
            5        6
           /   \    / \
          9     7  8   10
         / \   /    
        13 12 11    
             
    */
		//Min heap array
		int[] arr = {1,5,6,9,7,8,10,13,12,11};

		int size = arr.Length;


		Console.Write("Preorder\n");
		obj.preorder(arr,size,0); 
		Console.Write("\nInorder\n");
		obj.inorder(arr,size,0); 
		Console.Write("\nPostorder\n");
		obj.postorder(arr,size,0); 

	}
}

Output

Preorder
  1  5  9 13 12  7 11  6  8 10
Inorder
 13  9 12  5 11  7  1  8  6 10
Postorder
 13 12  9 11  7  5  8 10  6  1
# Python 3 Program
# Traversal binary min heap array

class MinHeap :
  def preorder(self, node, size, root) :
    if (root < size) :
      print(" ", node[root],end="")
      self.preorder(node, size, 2 * root + 1)
      self.preorder(node, size, 2 * root + 2)
    
  
  def inorder(self, node, size, root) :
    if (root < size) :
      self.inorder(node, size, 2 * root + 1)
      print(" ", node[root],end="")
      self.inorder(node, size, 2 * root + 2)
    
  
  def postorder(self, node, size, root) :
    if (root < size) :
      self.postorder(node, size, 2 * root + 1)
      self.postorder(node, size, 2 * root + 2)
      print(" ", node[root],end="")
    
  

def main() :
  obj = MinHeap()

  # Min heap
  #
  #              1
  #           /      \
  #          5        6
  #         /   \    / \
  #        9     7  8   10
  #       / \   /
  #      13 12 11
  #  
  arr = [1, 5, 6, 9, 7, 8, 10, 13, 12, 11]
  size = len(arr)
  print("Preorder")
  obj.preorder(arr, size, 0)
  print("\nInorder")
  obj.inorder(arr, size, 0)
  print("\nPostorder")
  obj.postorder(arr, size, 0)

if __name__ == "__main__":
  main()

Output

Preorder
  1  5  9 13 12  7 11  6  8 10
Inorder
 13  9 12  5 11  7  1  8  6 10
Postorder
 13 12  9 11  7  5  8 10  6  1
# Ruby Program
# Traversal binary min heap array

class MinHeap 
	def preorder(node, size, root) 
		if (root < size) 
			print("  ", node[root])
			self.preorder(node, size, 2 * root + 1)
			self.preorder(node, size, 2 * root + 2)
		end
	end
	def inorder(node, size, root) 
		if (root < size) 
			self.inorder(node, size, 2 * root + 1)
			print("  ", node[root])
			self.inorder(node, size, 2 * root + 2)
		end
	end
	def postorder(node, size, root) 
		if (root < size) 
			self.postorder(node, size, 2 * root + 1)
			self.postorder(node, size, 2 * root + 2)
			print("  ", node[root])
		end
	end
end
def main() 
	obj = MinHeap.new()

	# Min heap
	#
	#              1
	#           /      \
	#          5        6
	#         /   \    / \
	#        9     7  8   10
	#       / \   /
	#      13 12 11
	#  
	arr = [1, 5, 6, 9, 7, 8, 10, 13, 12, 11]
	size = arr.length
	print("Preorder\n")
	obj.preorder(arr, size, 0)
	print("\nInorder\n")
	obj.inorder(arr, size, 0)
	print("\nPostorder\n")
	obj.postorder(arr, size, 0)
end
main()

Output

Preorder
  1  5  9 13 12  7 11  6  8 10
Inorder
 13  9 12  5 11  7  1  8  6 10
Postorder
 13 12  9 11  7  5  8 10  6  1
<?php
/*
 Php Program
 Traversal binary min heap array
*/

class MinHeap {
  public  function preorder($node, $size, $root) {
    if ($root < $size) {
      echo("  ". $node[$root]);
      $this->preorder($node, $size, 2 *$root + 1);
      $this->preorder($node, $size, 2 *$root + 2);
    }
  }
  public  function inorder($node, $size, $root) {
    if ($root < $size) {
      $this->inorder($node, $size, 2 *$root + 1);
      echo("  ". $node[$root]);
      $this->inorder($node, $size, 2 *$root + 2);
    }
  }
  public  function postorder($node, $size, $root) {
    if ($root < $size) {
      $this->postorder($node, $size, 2 *$root + 1);
      $this->postorder($node, $size, 2 *$root + 2);
      echo("  ". $node[$root]);
    }
  }
}

function main() {
  $obj = new MinHeap();
  /* Min heap
  -----------------------
              1
           /      \
          5        6
         /   \    / \
        9     7  8   10
       / \   /    
      13 12 11    
           
  */
  $arr = array(1, 5, 6, 9, 7, 8, 10, 13, 12, 11);
  $size = count($arr);
  echo("Preorder\n");
  $obj->preorder($arr, $size, 0);
  echo("\nInorder\n");
  $obj->inorder($arr, $size, 0);
  echo("\nPostorder\n");
  $obj->postorder($arr, $size, 0);
}
main();

Output

Preorder
  1  5  9 13 12  7 11  6  8 10
Inorder
 13  9 12  5 11  7  1  8  6 10
Postorder
 13 12  9 11  7  5  8 10  6  1
/*
 Node Js Program
 Traversal binary min heap array
*/

class MinHeap {
	preorder(node, size, root) {
		if (root < size) {
			process.stdout.write("  " + node[root]);
			this.preorder(node, size, 2 *root + 1);
			this.preorder(node, size, 2 *root + 2);
		}
	}
	inorder(node, size, root) {
		if (root < size) {
			this.inorder(node, size, 2 *root + 1);
			process.stdout.write("  " + node[root]);
			this.inorder(node, size, 2 *root + 2);
		}
	}
	postorder(node, size, root) {
		if (root < size) {
			this.postorder(node, size, 2 *root + 1);
			this.postorder(node, size, 2 *root + 2);
			process.stdout.write("  " + node[root]);
		}
	}
}

function main() {
	var obj = new MinHeap();
	/* Min heap
    ---------------------
              1
           /      \
          5        6
         /   \    / \
        9     7  8   10
       / \   /    
      13 12 11    
           
    */
	var arr = [1, 5, 6, 9, 7, 8, 10, 13, 12, 11];
	var size = arr.length;
	process.stdout.write("Preorder\n");
	obj.preorder(arr, size, 0);
	process.stdout.write("\nInorder\n");
	obj.inorder(arr, size, 0);
	process.stdout.write("\nPostorder\n");
	obj.postorder(arr, size, 0);
}

main();

Output

Preorder
  1  5  9 13 12  7 11  6  8 10
Inorder
 13  9 12  5 11  7  1  8  6 10
Postorder
 13 12  9 11  7  5  8 10  6  1
/*
 Swift 4 Program
 Traversal binary min heap array
*/

class MinHeap {
  func preorder(_ node: [Int] , _ size : Int, _ root: Int) {
    if (root < size) {
      print(" ", node[root],terminator:"");
      self.preorder(node, size, 2 * root + 1);
      self.preorder(node, size, 2 * root + 2);
    }
  }
  func inorder(_ node: [Int] , _ size : Int, _ root: Int) {
    if (root < size) {
      self.inorder(node, size, 2 * root + 1);
      print(" ", node[root],terminator:"");
      self.inorder(node, size, 2 * root + 2);
    }
  }
  func postorder(_ node: [Int] , _ size : Int, _ root: Int) {
    if (root < size) {
      self.postorder(node, size, 2 * root + 1);
      self.postorder(node, size, 2 * root + 2);
      print(" ", node[root],terminator:"");
    }
  }
}
func main() {
  let obj: MinHeap = MinHeap();
  /* Min heap
  -----------------------
              1
           /      \
          5        6
         /   \    / \
        9     7  8   10
       / \   /    
      13 12 11    
           
  */
  let arr: [Int] = [1, 5, 6, 9, 7, 8, 10, 13, 12, 11];
  let size: Int = arr.count;
  print("Preorder");
  obj.preorder(arr, size, 0);
  print("\nInorder");
  obj.inorder(arr, size, 0);
  print("\nPostorder");
  obj.postorder(arr, size, 0);
}
main();

Output

Preorder
  1  5  9 13 12  7 11  6  8 10
Inorder
 13  9 12  5 11  7  1  8  6 10
Postorder
 13 12  9 11  7  5  8 10  6  1

Comment

Please share your knowledge to improve code and content standard. Also submit your doubts, and test case. We improve by your feedback. We will try to resolve your query as soon as possible.

New Comment