Skip to content

Commit d7efcce

Browse files
committed
BST operations
1 parent d9d5cfe commit d7efcce

File tree

1 file changed

+49
-28
lines changed

1 file changed

+49
-28
lines changed

insert_BST.cpp

Lines changed: 49 additions & 28 deletions
Original file line numberDiff line numberDiff line change
@@ -4,25 +4,25 @@ using namespace std;
44
struct Node
55
{
66
int data;
7-
Node *left ;
7+
Node *left;
88
Node *right;
99
};
1010

11-
Node * newNode(int data)
11+
Node *newNode(int data)
1212
{
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 ;
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;
1818
}
1919

2020
Node *create_BST(int arr[], int n, int i)
2121
{
2222
Node *root = nullptr;
2323

2424
if (i < n)
25-
{
25+
{
2626
root = newNode(arr[i]);
2727
root->left = create_BST(arr, n, 2 * i + 1);
2828
root->right = create_BST(arr, n, 2 * i + 2);
@@ -32,43 +32,64 @@ Node *create_BST(int arr[], int n, int i)
3232

3333
void inorder_traversal(Node *root)
3434
{
35-
if(root != NULL)
35+
if (root != NULL)
3636
{
3737
inorder_traversal(root->left);
38-
cout<<root->data<<" ";
38+
cout << root->data << " ";
3939
inorder_traversal(root->right);
4040
}
4141
}
4242

43-
//insert element in BST
44-
Node * insert_BST(Node * root , int e)
45-
{
43+
// insert element in BST
44+
Node *insert_BST_recursion(Node *root, int e)
45+
{
4646

47-
if(!root)
47+
if (!root)
4848
{
49-
Node * node = new Node ;
49+
Node *node = new Node;
5050
node = newNode(e);
51-
return node ;
51+
return node;
52+
}
53+
if (root->data > e)
54+
root->left = insert_BST(root->left, e);
55+
56+
else if (root->data < e)
57+
root->right = insert_BST(root->right, e);
58+
59+
return root;
60+
}
61+
62+
void insert_BST_iteration(Node *root, int e)
63+
{
64+
Node *prev = nullptr;
65+
while (root != nullptr)
66+
{
67+
prev = root;
68+
if( root->data == e)
69+
return ;
70+
if (root->data > e)
71+
root = root->left ;
72+
73+
else if (root->data < e)
74+
root = root->right ;
5275
}
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 ;
76+
77+
Node * node = newNode(e) ;
78+
if(prev->data > e)
79+
prev->left = node ;
80+
else
81+
prev->right = node ;
6282
}
6383

6484
int main()
6585
{
6686
int arr[] = {30, 20, 40, 10, 25, 35, 50};
6787
int n = sizeof(arr) / sizeof(arr[0]);
68-
Node * root = create_BST(arr, n ,0);
88+
Node *root = create_BST(arr, n, 0);
6989
inorder_traversal(root);
70-
root = insert_BST(root , 45);
71-
cout<<endl;
90+
//root = insert_BST_recursion(root, 45);
91+
insert_BST_iteration(root , 45) ;
92+
cout << endl;
7293
inorder_traversal(root);
7394
return 0;
7495
}

0 commit comments

Comments
 (0)