diff --git a/docs/en/Tree/min-heap.md b/docs/en/Tree/min-heap.md
new file mode 100644
index 00000000..d09465bb
--- /dev/null
+++ b/docs/en/Tree/min-heap.md
@@ -0,0 +1,53 @@
+# Min Heap
+
+**Min Heap** is a **a binary tree structure** introduced by J. W. J. Williams in 1964. It is defined by two following constraints:
+- The binary tree is complete on all levels except the last one. The nodes in the last, deepest, level are filled from left to right.
+- The key of each node is less or equal to the keys of its children
+
+**Min Heap** has following properties:
+1. Worst case time complexity:
+ - build the heap: O(n)
+ - remove min: O(log(n))
+ - insert: O(log n)
+ - remove all elements: O(n*log(n))
+2. Space complexity:
+ - build the heap: O(n)
+ - remove min: O(1)
+ - insert: O(1)
+ - remove all elements: O(1)
+3. Applications:
+ - quick access to the smallest element
+ - implementation of priority queue
+ - heapsort
+
+## Operations on heap
+**insert**
+1. Add the element next to the leftmost free node on the deepest level.
+2. Compare the element with the key of its parent.
+3. If the parent is greater than the element, swap them (move the element one level up), then go to step two.
+4. Stop if the parent is less or equal.
+
+> **Note:** second and third steps sift the element up the tree, until correct order of elements is achieved.
+
+**remove min**
+1. Replace the root with the rightmost element on the deepest level. The new root is now current element.
+2. Compare the current element with its smallest child.
+3. If the element is greater than its smallest child, swap the element with its smallest child (move the element one level deeper), and go to step 2.
+4. If both children are greater or equal to the current element, stop.
+> **Note:** second and third steps sift the element down the tree until correct order of elements is achieved.
+
+## Example
+
+- **Inserting** elements 4, 10, 2, 22, 45, 18
Output: 2 10 4 22 45 18
Explanation: The numbers are stored subsequently. 2 is the root, 10 and 4 are its children. The children of 10 are 22 and 45. The only child of 4 is 18.
+- **Deleting** the minimum in 2 10 4 22 45 18
Output: 4 10 18 22 45
Explanation: First, 2 is swapped with 18. Then, 18 is sifted down the tree, until the elements are in correct order. The size of the heap is reduced by 1.
+
+
+## Implementation
+- [C](https://github.com/MakeContributions/DSA/blob/main/algorithms/C/tree/min-heap.c)
+- [C++](https://github.com/MakeContributions/DSA/blob/main/algorithms/CPlusPlus/Trees/min-heap.cpp)
+## Video URL
+[Youtube Video about Heaps](https://www.youtube.com/watch?v=t0Cq6tVNRBA)
+
+## Others
+[Wikipedia](https://en.wikipedia.org/wiki/Binary_heap)
+