Scala实现基于WeightedTree生成字符-二进制路径映射Map的函数
加权树编码映射实现需求
已完成的基础代码结构
目前已落地的代码包含三个核心模块:
- 抽象特质
WeightedTree:内置weight权重属性,作为所有加权树节点的统一抽象父类型 - 叶节点类
Leaf:内部存储关联字符与对应权重值 - 内部节点类
Inner:分别持有左右两个子树引用与自身聚合的总权重值
待补全的功能要求
当前需要在CodeCreator应用对象中实现treeToMap函数,函数规格如下:
- 输入参数:
WeightedTree类型的加权树根节点 - 返回值类型:
Map[Char, String],键为叶节点存储的字符,值为对应节点的路径编码 - 编码生成规则:遍历树中所有叶节点,记录从根节点出发到目标叶节点的完整路径,其中向左子树行进追加字符
'0',向右子树行进追加字符'1'
参考实现效果
对于结构为
Inner(Inner(Leaf('a',4), 5, Leaf('c',1)), 10, Leaf('b',5))的加权树,最终生成的字符编码映射为:
'a' -> "00"'b' -> "1"'c' -> "01"
内容的提问来源于stack exchange,提问作者Daniel
相关产品推荐
相关产品推荐

