-
Notifications
You must be signed in to change notification settings - Fork 201
/
Copy pathbst.cpp
104 lines (86 loc) · 1.38 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
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
#include<bits/stdc++.h>
using namespace std;
typedef struct tree
{
int val;
struct tree* right;
struct tree* left;
}treesh;
tree* newnode(int data)
{
tree* newtree = (tree*)malloc(sizeof(tree));
newtree->left=NULL;
newtree->right=NULL;
newtree->val=data;
return newtree;
}
void insert (int data, tree* root)
{
if (root->val<data)
{
if (root->right!=NULL)
insert (data,root->right);
else
{
tree* temp=newnode(data);
root->right=temp;
}
}
else if (root->val>data)
{
if (root->left!=NULL)
insert (data,root->left);
else
{
tree* temp=newnode(data);
root->left=temp;
}
}
}
int search (int data, tree* root)
{
if (root->val<data)
{
if (root->right!=NULL)
return search(data,root->right);
else
return 0;
}
else if (root->val>data)
{
if (root->left!=NULL)
return search(data,root->left);
else
return 0;
}
else if (root->val==data)
return data;
}
void inorder (tree* root)
{
if (root==NULL)
return;
inorder(root->left);
cout<<root->val<<" ";
inorder(root->right);
}
int main () {
tree* bst = newnode(10);
insert (2,bst);
insert (14,bst);
insert (17,bst);
insert (7,bst);
insert (1,bst);
insert (8,bst);
insert (19,bst);
insert (4,bst);
insert (11,bst);
insert (16,bst);
int ans=search (1,bst);
if (ans==0)
cout<<"NOT FOUND\n";
else
cout<<"FOUND "<<ans<<"\n";
inorder(bst);
cout<<"\n";i
}