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; }
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; }