huff_node *find_leaf_node(int char_value, huff_node *root) {

    if (root == NULL) {
        return NULL;
    }
    if (root->char_number == char_value) {
        return root;
    }
    huff_node *result = find_leaf_node(char_value, root->left_child);
    if (result == NULL) {
        result = find_leaf_node(char_value, root->right_child);
    }
    return result;
}
Exemple #2
0
size_t ntree<tree_dim, world_dim, elem_t, common_data_t>::
find_leaf_node(const vector_t& point, size_t curNode)
{
	Node& n = m_nodes[curNode];
	if(traits::box_contains_point(n.tightBox, point)){
		if(n.childNodeInd[0] != s_invalidIndex){
			for(size_t i = 0; i < s_numChildren; ++i){
				size_t result = find_leaf_node(point, n.childNodeInd[i]);
				if(result != s_invalidIndex)
					return result;
			}
		}
		else{
			return curNode;
		}
	}
	return s_invalidIndex;
}
// Gets the encoding for the specified character value.
char *encoding_for_char(int char_value, huff_node *root) {
    huff_node *node = find_leaf_node(char_value, root);
    assert(node != NULL);
    return node->encoding;
}