-
Notifications
You must be signed in to change notification settings - Fork 0
Expand file tree
/
Copy pathBST.cpp
More file actions
executable file
·119 lines (102 loc) · 2.13 KB
/
BST.cpp
File metadata and controls
executable file
·119 lines (102 loc) · 2.13 KB
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
105
106
107
108
109
110
111
112
113
114
115
116
117
118
//
// MovieRentalStore.cpp
// hw4
//
// Created by Iris Favoreal on 3/10/18.
// Copyright © 2018 Iris Favoreal. All rights reserved.
//
#include <stdio.h>
#include "BST.h"
template<class DVDGenre>
BST<DVDGenre>::BST(char g)
{
root = NULL;
genre = g;
}
template <class DVDGenre>
BST<DVDGenre>::~BST()
{
emptyTree(root);
}
template <class DVDGenre>
void BST<DVDGenre>::insert(DVDGenre newDVD)
{
Node* newNode = new Node();
newNode->data = newDVD;
newNode->left = newNode->right = NULL;
insertHelper(newNode, root);
}
template <class DVDGenre>
void BST<DVDGenre>::insertHelper(Node* n, Node* &cur)
{
if(cur == NULL)
cur = n;
else if (*n->data > *cur->data)
insertHelper(n, cur->right);
else if (*n->data < *cur->data)
insertHelper(n, cur->left);
else
{
cur->data->returnIt();
delete n->data;
delete n;
n = NULL;
}
}
template <class DVDGenre>
bool BST<DVDGenre>::remove(DVDGenre someDVD)
{
return true;
}
template <class DVDGenre>
DVDGenre BST<DVDGenre>::retrieve(DVDGenre someDVD)
{
return retrieveHelper(someDVD, root);
}
template <class DVDGenre>
DVDGenre BST<DVDGenre>::retrieveHelper(DVDGenre someDVD, Node*& cur)
{
if(cur == NULL)
return NULL;
else if(*someDVD < *cur->data)
return retrieveHelper(someDVD, cur->left);
else if(*someDVD > *cur->data)
return retrieveHelper(someDVD, cur->right);
else
return cur->data;
}
template <class DVDGenre>
char BST<DVDGenre>::getGenre()
{
return genre;
}
template <class DVDGenre>
void BST<DVDGenre>::print()
{
printHelper(root);
}
template <class DVDGenre>
void BST<DVDGenre>::printHelper(Node*& cur)
{
if (cur == NULL)
return;
printHelper(cur->left);
cout << *cur->data << " ";
printHelper(cur->right);
}
template <class DVDGenre>
void BST<DVDGenre>::emptyTree(Node*& cur)
{
if(cur == NULL)
return;
emptyTree(cur->left);
emptyTree(cur->right);
if(cur->data != NULL)
{
delete cur->data;
cur->data = NULL;
}
delete cur;
cur = NULL;
}
template class BST<Movie*>;