{"id":9088,"date":"2025-08-08T19:03:00","date_gmt":"2025-08-08T13:33:00","guid":{"rendered":"https:\/\/namastedev.com\/blog\/?p=9088"},"modified":"2025-10-15T16:39:35","modified_gmt":"2025-10-15T11:09:35","slug":"introduction-to-heaps","status":"publish","type":"post","link":"https:\/\/namastedev.com\/blog\/introduction-to-heaps\/","title":{"rendered":"Introduction to Heaps"},"content":{"rendered":"\n<!-- Prism.js for Code Highlighting -->\n<link\n    href=\"https:\/\/cdn.jsdelivr.net\/npm\/prismjs@1.29.0\/themes\/prism-tomorrow.min.css\"\n    rel=\"stylesheet\"\n\/>\n<script src=\"https:\/\/cdn.jsdelivr.net\/npm\/prismjs@1.29.0\/prism.min.js\"><\/script>\n<script src=\"https:\/\/cdn.jsdelivr.net\/npm\/prismjs@1.29.0\/plugins\/autoloader\/prism-autoloader.min.js\"><\/script>\n\n<style>\n.wp_blog_theme {\n  --primary: #E58C32;\n  --secondary: #030302;\n  --light-bg: #fef9f4;\n  --text-dark: #2d2d2d;\n  --tab-radius: 12px;\n  --shadow: 0 4px 12px rgba(0, 0, 0, 0.08);\n  --code-bg: #001f3f;\n  --code-text: #d4f1ff;\n}\n\n.wp_blog_container {\n  font-family: 'Segoe UI', sans-serif;\n  background: var(--light-bg);\n  margin: 0;\n  padding: 0;\n  color: var(--text-dark);\n}\n\n\/* Heading *\/\n.wp_blog_main-heading {\n  text-align: center;\n  font-size: 2.4rem;\n  color: var(--primary);\n  margin-top: 2.5rem;\n  font-weight: bold;\n}\n\n\/* Explanation Card *\/\n.wp_blog_explanation,\n.wp_blog_code-tabs-container {\n  max-width: 940px;\n  margin: 2rem auto;\n  padding: 2rem;\n  background: white;\n  border-radius: var(--tab-radius);\n  box-shadow: var(--shadow);\n}\n\n\/* Text and Visuals *\/\n.wp_blog_explanation h2 {\n  font-size: 1.4rem;\n  color: var(--primary);\n  margin-bottom: 0.5rem;\n}\n\n.wp_blog_explanation p,\n.wp_blog_explanation li {\n  font-size: 1.05rem;\n  line-height: 1.7;\n  margin: 0.5rem 0;\n}\n\n.wp_blog_explanation code {\n  background: #fef9f4;   \/* light bg instead of dark blue *\/\n  color: #E58C32;        \/* brand orange *\/\n  padding: 3px 6px;\n  border-radius: 4px;\n  font-family: 'Courier New', monospace;\n  font-weight: 600;      \/* optional, makes it pop *\/\n}\n\n.wp_blog_explanation img {\n  max-width: 100%;\n  border-radius: var(--tab-radius);\n  margin-top: 1rem;\n  box-shadow: 0 2px 12px rgba(0, 0, 0, 0.06);\n}\n\n\/* Tab Buttons *\/\n.wp_blog_code-tabs-header {\n  display: flex;\n  flex-wrap: wrap;\n  gap: 0.5rem;\n  margin-bottom: 1rem;\n}\n\n.wp_blog_code-tab-button {\n  padding: 0.6rem 1.2rem;\n  border: 1px solid var(--primary);\n  background: white;\n  color: var(--primary);\n  border-radius: 50px;\n  font-weight: 600;\n  cursor: pointer;\n  transition: all 0.3s ease;\n}\n\n.wp_blog_code-tab-button:hover {\n  background: var(--secondary);\n}\n\n.wp_blog_code-tab-button.active {\n  background: var(--primary);\n  color: white;\n}\n\n\/* Code Content *\/\n.wp_blog_code-tab-content {\n  display: none;\n  background: var(--code-bg);\n  border-radius: var(--tab-radius);\n}\n\n.wp_blog_code-tab-content.active {\n  display: block;\n}\n\n.wp_blog_code-tab-content pre {\n  margin: 0;\n  padding: 1.5rem;\n  font-size: 1rem;\n  overflow-x: auto;\n  background: var(--code-bg);\n  border-radius: var(--tab-radius);\n  color: var(--code-text);\n}\n\n\/* Dark mode variables *\/\n.wp_blog_theme.dark-mode {\n  --light-bg: #121212;\n  --text-dark: #f5f5f5;\n  --shadow: 0 4px 12px rgba(255, 255, 255, 0.08);\n  --code-bg: #1e1e1e;\n  --code-text: #c5f0ff;\n}\n\n.wp_blog_theme.dark-mode .wp_blog_explanation {\n  background: #1e1e1e;\n}\n\n\/* Dark mode code highlight *\/\n.wp_blog_theme.dark-mode .wp_blog_explanation code {\n  background: #333;\n  color: #ffd27f;\n}\n\n.wp_blog_theme {\n  position: relative; \/* makes it the reference for absolute children *\/\n}\n\n.wp_blog_toggle-btn {\n  position: absolute;\n  top: 1rem;\n  right: 1rem;\n  z-index: 9999;\n  padding: 0.5rem 0.8rem;\n  border-radius: 10%;\n  background: var(--primary);\n  color: white;\n  font-weight: bold;\n  cursor: pointer;\n  border: none;\n  box-shadow: var(--shadow);\n  transition: background 0.3s, transform 0.2s;\n}\n\n.wp_blog_toggle-btn:hover {\n  background: #cc772e;\n}\n\n.wp_blog_theme.dark-mode .wp_blog_code-tabs-container {\n  background: #1e1e1e;\n}\n<\/style>\n\n<div class=\"wp_blog_container wp_blog_theme\">\n      <button id=\"blogNotesThemeToggle\" class=\"wp_blog_toggle-btn\">\ud83c\udf19<\/button>\n    <h1 class=\"wp_blog_main-heading\"><\/h1>\n\n    <div class=\"wp_blog_explanation\">\n        <h2>Complete Binary Tree:<\/h2>\n        <ul>\n            <li>\n                A <strong>Complete Binary Tree<\/strong> is one in which, during\n                <code>level order traversal<\/code>, there are no\n                <code>missing nodes<\/code>. All levels are completely filled\n                except possibly the last level, which is filled\n                <strong>from left to right<\/strong>.\n            <\/li>\n        <\/ul>\n\n        <h2>Full Binary Tree:<\/h2>\n        <ul>\n            <li>Every <strong>full binary tree<\/strong> is always a complete binary tree.<\/li>\n            <li>At <strong>every level<\/strong>, all the <code>nodes<\/code> are present.<\/li>\n            <li>\n                You need to <code>fill all the nodes<\/code> at each level before moving to\n                the next.\n            <\/li>\n            <li>\n                The <strong>number of nodes<\/strong> at each level is<code>2<sup>n<\/sup><\/code>\n                n is the level number (starting from 0).\n            <\/li>\n        <\/ul>\n\n        <h2>Important Points to Remember:<\/h2>\n        <ul>\n            <li>\n                <strong\n                    >A complete binary tree is a type of binary tree with\n                    specific structural properties. These properties are:\n                <\/strong>\n                <ul>\n                    <li>\n                        <strong\n                            >All levels are completely filled, except possibly\n                            the last level.<\/strong\n                        >\n                        <p>\n                            This means that every level of the tree, from the\n                            root down to the second-to-last level, must contain\n                            the maximum possible number of nodes for that level.\n                            For example: level 0 (the root) has 1 node, level 1\n                            has 2 nodes, level 2 has 4 nodes, and so on.\n                        <\/p>\n                    <\/li>\n\n                    <li>\n                        <strong\n                            >Nodes at the last level are as far left as\n                            possible.<\/strong\n                        >\n                        <p>\n                            If the last level is not completely filled, the\n                            nodes present in that level must be arranged\n                            contiguously from the left side, with no gaps. There\n                            cannot be a right child without a corresponding left\n                            child at the same level.\n                        <\/p>\n                    <\/li>\n\n                    <li>\n                        <strong\n                            >In simpler terms, a complete binary tree looks like\n                            a perfectly filled binary tree,<\/strong\n                        >\n                        <p>\n                            Except that the bottom-most row might have some\n                            empty spots, but only on the right side. This\n                            structure ensures compact and efficient\n                            representation, often used in data structures like\n                            heaps.\n                        <\/p>\n                    <\/li>\n                <\/ul>\n            <\/li>\n        <\/ul>\n        <i>Source: Internet<\/i>\n\n        <h2>Practice:<\/h2>\n        <h3>Which one is Complete Binary Tree or Not?<\/h3>\n        <img decoding=\"async\"\n            src=\"https:\/\/namastedev.com\/blog\/wp-content\/uploads\/2025\/08\/Screenshot-2025-08-08-at-5.22.23\u202fPM.png\"\n            alt=\"\"\n        \/>\n        <img decoding=\"async\"\n            src=\"https:\/\/namastedev.com\/blog\/wp-content\/uploads\/2025\/08\/Screenshot-2025-08-08-at-5.22.31\u202fPM.png\"\n            alt=\"\"\n        \/>\n\n        <h2>Heap<\/h2>\n        <p><code>All the Heaps are complete Binary Tree.<\/code><\/p>\n        <p><strong>Heaps are two types:<\/strong><\/p>\n        <h3><code>Min Heap:<\/code><\/h3>\n        <!-- min heap -->\n        <img decoding=\"async\"\n            src=\"https:\/\/namastedev.com\/blog\/wp-content\/uploads\/2025\/08\/Screenshot-2025-08-08-at-5.40.58\u202fPM.png\"\n            alt=\"\"\n        \/>\n        <li>\n            All the <code>parent(value)<\/code> should be <strong>less than and equal<\/strong> (<=) to\n            children\u2019s smallest element on the root.\n        <\/li>\n        <h3><code>Max Heap:<\/code><\/h3>\n        <!-- max Heap -->\n        <img decoding=\"async\"\n            src=\"https:\/\/namastedev.com\/blog\/wp-content\/uploads\/2025\/08\/Screenshot-2025-08-08-at-5.41.39\u202fPM.png\"\n            alt=\"\"\n        \/>\n        <li>\n            The <code>parent(value)<\/code> should be <strong>greater than and equal<\/strong> (>=) to children\n            \u2019s Largest element on the root.\n        <\/li>\n\n        <h2>Advantages &#038; Disadvantages of Heap:<\/h2>\n        <h3>Advantages:<\/h3>\n        <ul>\n            <li>\n                Max Heap: If we have to find <code>largest<\/code> elements\n                inside maxHeap: <strong>Time Complexity: <\/strong\n                ><code>O(1)<\/code> Because it always on root, return\n                <code>root.val<\/code>\n            <\/li>\n            <li><strong>Insert: <\/strong><code>O(logn)<\/code><\/li>\n            <li><strong>Delete: <\/strong><code>O(logn)<\/code><\/li>\n        <\/ul>\n\n        <ul>\n            <li>\n                Min Heap: If we have to find <code>smallest<\/code> elements\n                inside minHeap: <strong>Time Complexity: <\/strong\n                ><code>O(1)<\/code>\n            <\/li>\n        <\/ul>\n\n        <ul>\n            <li>\n                <code>Heap: <\/code> <strong>Time Complexity: <\/strong\n                ><code>O(nlogn)<\/code>\n            <\/li>\n        <\/ul>\n\n        <h3>Disadvantages:<\/h3>\n        <ul>\n            <li>Slightly tricky to code.<\/li>\n            <li>Lack of Flexibility.<\/li>\n        <\/ul>\n    <\/div>\n<\/div>\n\n<script>\ndocument.addEventListener(\"DOMContentLoaded\", () => {\n  const buttons = document.querySelectorAll(\".wp_blog_code-tab-button\");\n  const contents = document.querySelectorAll(\".wp_blog_code-tab-content\");\n\n  buttons.forEach((button) => {\n    button.addEventListener(\"click\", () => {\n      const lang = button.getAttribute(\"data-lang\");\n\n      buttons.forEach((btn) => btn.classList.remove(\"active\"));\n      contents.forEach((content) => content.classList.remove(\"active\"));\n\n      button.classList.add(\"active\");\n      document\n        .querySelector(`.wp_blog_code-tab-content[data-lang=\"${lang}\"]`)\n        .classList.add(\"active\");\n    });\n  });\n\n  const themeToggle = document.getElementById(\"blogNotesThemeToggle\");\n  const themeContainer = document.querySelector(\".wp_blog_theme\");\n\n  themeToggle.addEventListener(\"click\", () => {\n    themeContainer.classList.toggle(\"dark-mode\");\n    themeToggle.textContent =\n      themeContainer.classList.contains(\"dark-mode\") ? \"\u2600\ufe0f\" : \"\ud83c\udf19\";\n  });\n});\n<\/script>\n\n","protected":false},"excerpt":{"rendered":"<p>\ud83c\udf19 Complete Binary Tree: A Complete Binary Tree is one in which, during level order traversal, there are no missing nodes. All levels are completely filled except possibly the last level, which is filled from left to right. Full Binary Tree: Every full binary tree is always a complete binary tree. At every level, all<\/p>\n","protected":false},"author":108,"featured_media":0,"comment_status":"open","ping_status":"open","sticky":false,"template":"","format":"standard","meta":{"om_disable_all_campaigns":false,"_monsterinsights_skip_tracking":false,"_monsterinsights_sitenote_active":false,"_monsterinsights_sitenote_note":"","_monsterinsights_sitenote_category":0,"footnotes":""},"categories":[210,322,176,175,211,811,810,174,172,173],"tags":[],"class_list":{"0":"post-9088","1":"post","2":"type-post","3":"status-publish","4":"format-standard","6":"category-algorithms","7":"category-algorithms-and-data-structures","8":"category-csharp","9":"category-cplusplus","10":"category-data-structures","11":"category-data-structures-and-algorithms","12":"category-dsa","13":"category-java","14":"category-javascript","15":"category-python"},"aioseo_notices":[],"_links":{"self":[{"href":"https:\/\/namastedev.com\/blog\/wp-json\/wp\/v2\/posts\/9088","targetHints":{"allow":["GET"]}}],"collection":[{"href":"https:\/\/namastedev.com\/blog\/wp-json\/wp\/v2\/posts"}],"about":[{"href":"https:\/\/namastedev.com\/blog\/wp-json\/wp\/v2\/types\/post"}],"author":[{"embeddable":true,"href":"https:\/\/namastedev.com\/blog\/wp-json\/wp\/v2\/users\/108"}],"replies":[{"embeddable":true,"href":"https:\/\/namastedev.com\/blog\/wp-json\/wp\/v2\/comments?post=9088"}],"version-history":[{"count":4,"href":"https:\/\/namastedev.com\/blog\/wp-json\/wp\/v2\/posts\/9088\/revisions"}],"predecessor-version":[{"id":10333,"href":"https:\/\/namastedev.com\/blog\/wp-json\/wp\/v2\/posts\/9088\/revisions\/10333"}],"wp:attachment":[{"href":"https:\/\/namastedev.com\/blog\/wp-json\/wp\/v2\/media?parent=9088"}],"wp:term":[{"taxonomy":"category","embeddable":true,"href":"https:\/\/namastedev.com\/blog\/wp-json\/wp\/v2\/categories?post=9088"},{"taxonomy":"post_tag","embeddable":true,"href":"https:\/\/namastedev.com\/blog\/wp-json\/wp\/v2\/tags?post=9088"}],"curies":[{"name":"wp","href":"https:\/\/api.w.org\/{rel}","templated":true}]}}