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