-
Notifications
You must be signed in to change notification settings - Fork 492
/
BST.cpp
75 lines (56 loc) Β· 1.52 KB
/
BST.cpp
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
/// Program for creating a binary tree using nodes and preorder traversal - left root right
#include<bits/stdc++.h>
using namespace std;
struct Node{
int value;
struct Node * left,* right,* root;
};
struct Node * createNode(int val){
struct Node * newNode= new Node;
newNode->value=val;
newNode->left=newNode->right=NULL;
newNode->root=NULL;
return newNode;
}
///To Print BST
void inOrderTraversal(Node *head){
if(head==NULL) return;
inOrderTraversal(head->left);
cout<<head->value<<" ";
inOrderTraversal(head->right);
}
struct Node * insertNode(Node *head,int val){
if(head==NULL) return createNode(val);
if(head->value > val){
Node * lchild=insertNode(head->left,val);
head->left=lchild;
lchild->root=head;
}
else if(head->value<val){
Node * rchild=insertNode(head->right,val);
head->right=rchild;
rchild->root=head;
}
return head;
}
// Driver Program to test above functions
int main()
{
/* Let us create following BST
50
/ \
30 70
/ \ / \
20 40 60 80 */
struct Node *root = NULL;
root = insertNode(root, 50);
insertNode(root, 30);
insertNode(root, 20);
insertNode(root, 40);
insertNode(root, 70);
insertNode(root, 60);
insertNode(root, 80);
// print inorder traversal of the BST
inOrderTraversal(root);
return 0;
}