BinaryNode* BinaryHeap::find_recursive(BinaryNode* subRoot, BinaryNode* searchNode){ BinaryNode* foundNode = NULL; if(*subRoot == *searchNode){ foundNode = subRoot; } // If we found our node, stop recursion // Else, search children if(foundNode == NULL){ if(subRoot->leftChild != NULL){ foundNode = find_recursive(subRoot->leftChild, searchNode); if(foundNode){ return foundNode; } } if(foundNode == NULL){ if(subRoot->rightChild != NULL){ foundNode = find_recursive(subRoot->rightChild, searchNode); if(foundNode){ return foundNode; } } } } return foundNode; }
object_t *find_recursive(tree_node_t *tree, key_t query_key) { if( tree->left == NULL || (tree->right == NULL && tree->key != query_key ) ) return(NULL); else if (tree->right == NULL && tree->key == query_key ) return( (object_t *) tree->left ); else { if( query_key < tree->key ) return( find_recursive(tree->left, query_key) ); else return( find_recursive(tree->right, query_key) ); } }
BinaryNode* BinaryHeap::find(int searchData){ BinaryNode* foundNode = NULL; if(!isEmpty()){ // We have a non-empty list, make a new node and search BinaryNode searchNode(searchData); foundNode = find_recursive(root, &searchNode); } return foundNode; }