Skip to content

Commit d9d5cfe

Browse files
committed
BST insertion
1 parent 6041a0a commit d9d5cfe

File tree

1 file changed

+74
-0
lines changed

1 file changed

+74
-0
lines changed

insert_BST.cpp

Lines changed: 74 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,74 @@
1+
#include <bits/stdc++.h>
2+
using namespace std;
3+
4+
struct Node
5+
{
6+
int data;
7+
Node *left ;
8+
Node *right;
9+
};
10+
11+
Node * newNode(int data)
12+
{
13+
Node * new_node = new Node ;
14+
new_node->data = data ;
15+
new_node->left = NULL ;
16+
new_node->right = NULL ;
17+
return new_node ;
18+
}
19+
20+
Node *create_BST(int arr[], int n, int i)
21+
{
22+
Node *root = nullptr;
23+
24+
if (i < n)
25+
{
26+
root = newNode(arr[i]);
27+
root->left = create_BST(arr, n, 2 * i + 1);
28+
root->right = create_BST(arr, n, 2 * i + 2);
29+
}
30+
return root;
31+
}
32+
33+
void inorder_traversal(Node *root)
34+
{
35+
if(root != NULL)
36+
{
37+
inorder_traversal(root->left);
38+
cout<<root->data<<" ";
39+
inorder_traversal(root->right);
40+
}
41+
}
42+
43+
//insert element in BST
44+
Node * insert_BST(Node * root , int e)
45+
{
46+
47+
if(!root)
48+
{
49+
Node * node = new Node ;
50+
node = newNode(e);
51+
return node ;
52+
}
53+
if(root->data > e)
54+
{
55+
root->left = insert_BST(root->left , e );
56+
}
57+
else if(root->data < e)
58+
{
59+
root->right = insert_BST(root->right , e);
60+
}
61+
return root ;
62+
}
63+
64+
int main()
65+
{
66+
int arr[] = {30, 20, 40, 10, 25, 35, 50};
67+
int n = sizeof(arr) / sizeof(arr[0]);
68+
Node * root = create_BST(arr, n ,0);
69+
inorder_traversal(root);
70+
root = insert_BST(root , 45);
71+
cout<<endl;
72+
inorder_traversal(root);
73+
return 0;
74+
}

0 commit comments

Comments
 (0)