void generateCodes(const iNode *node, const HuffCode &prefix, HuffCodeMap &outCodes){ if (const leafNode *lf = dynamic_cast<const leafNode*>(node)) outCodes[lf->c] = prefix; else if (const intNode *in = dynamic_cast<const intNode*>(node)){ HuffCode leftPrefix = prefix; leftPrefix.push_back(false); generateCodes(in->left, leftPrefix, outCodes); HuffCode rightPrefix = prefix; rightPrefix.push_back(true); generateCodes(in->right, rightPrefix, outCodes); } }
void GenerateCodes(const INode* node, const HuffCode& prefix, HuffCodeMap& outCodes) { if (const LeafNode* lf = dynamic_cast<const LeafNode*>(node)) { outCodes[lf->c] = prefix; } else if (const InternalNode* in = dynamic_cast<const InternalNode*>(node)) { HuffCode leftPrefix = prefix; leftPrefix.push_back(false); GenerateCodes(in->left, leftPrefix, outCodes); HuffCode rightPrefix = prefix; rightPrefix.push_back(true); GenerateCodes(in->right, rightPrefix, outCodes); } }