Advertisement
Not a member of Pastebin yet?
Sign Up,
it unlocks many cool features!
- //DELETE MOVIE HELPER FUNCTIONS
- TreeNode* findHelper(TreeNode* parent, TreeNode* temp) {
- if (parent->titleChar == temp->titleChar) {
- return parent;
- }
- else {
- if (parent->titleChar < temp->titleChar) {
- return findHelper(parent->rightChild, temp);
- }
- if (parent->titleChar > temp->titleChar) {
- return findHelper(parent->leftChild, temp);
- }
- }
- }
- TreeNode* findParent(TreeNode* temp, TreeNode* root) {
- TreeNode* parent = findHelper(root, temp);
- if (parent->rightChild == temp || parent->leftChild == temp) {
- return temp;
- }
- else {
- return NULL;
- }
- }
- TreeNode* returnMaxNode(TreeNode* currNode){
- if(currNode->rightChild == NULL){
- return currNode;
- }
- return returnMaxNode(currNode->rightChild);
- }
- TreeNode* returnMinNode(TreeNode* currNode){
- if(currNode->leftChild == NULL){
- return currNode;
- }
- return returnMinNode(currNode->leftChild);
- }
- void removeNode(TreeNode* temp, TreeNode* root) {
- if (temp->rightChild == NULL && temp->leftChild == NULL) {
- TreeNode* parent = findParent(temp, root);
- cout << parent->titleChar << endl;
- temp = NULL;
- }
- else if (temp->rightChild == NULL && temp->leftChild != NULL) {
- TreeNode* min = returnMinNode(temp->rightChild);
- temp = min;
- min = NULL;
- }
- else if (temp->rightChild != NULL && temp->leftChild == NULL) {
- TreeNode* max = returnMaxNode(temp->leftChild);
- temp = max;
- max = NULL;
- }
- else {
- TreeNode* max = returnMaxNode(temp->leftChild);
- temp = max;
- max = NULL;
- }
- }
- void MovieTree::deleteMovie(std::string title)
- {
- TreeNode* searched = new TreeNode;
- searched = searchNode(title[0], root);
- //if the character has been searched before
- if (searched != NULL) {
- LLMovieNode* curr = searched->head;
- LLMovieNode* prev = curr;
- //while the current node has been searched before
- while (curr != NULL)
- {
- //if it is the correct title and we are at the searched node
- if (curr->title == title && curr == searched->head) {
- //at the end of the LL
- //the last element present
- if (curr->next == NULL) {
- delete curr;
- searched->head = NULL;
- removeNode(searched, root);
- }
- //when there are other elements still in the LL
- else
- {
- searched->head = curr->next;
- delete curr;
- }
- }
- else if (curr->title == title) {
- prev->next = curr->next;
- delete curr;
- }
- //movie not found
- else {
- prev = curr;
- curr = curr->next;
- }
- }
- }
- }
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement