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;
}
Beispiel #2
0
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;
}