Home

赫夫曼编码

赫夫曼树 赫夫曼树又叫做最优二叉树,特点是带权路径最短(某个节点的带权路径指的是该节点到根节点的路径长度乘以节点的权值)。 构造赫夫曼树的步骤如下: 将所有节点看作只有一个根节点的二叉树,进行排序; 选出两个根节点权值最小的树作为左右子树构造一个新的二叉树,新二叉树的根节点的权值为左右子树的权值之和; 从所有节点中删除第 2 步中的两个树,并加入新构造的树; 重复第 2 步和第 3 步,直到只剩下一个树。 赫夫曼树的特点: 权值越大的节点,距离根节点越近。 树中没有度为 1 的节点,这类树又叫做正则(严格)二叉树。 赫夫曼编码 赫夫曼树的一个重要应用就是赫夫曼编码,即要将传送的文字转换为二进制的字符串,要求转换后的字符串越短越好,而且可解码...

Read more

一个 activity 中垂直排列两个 listview

原生 Android 并不支持在一个 activity 中垂直地排列两个 listview,本文章中介绍了一种实现方法。 原理 为了实现这种效果,一开始我想到的办法是 listview 中加上一个 footerview,footerview 里面嵌套一个listview,但是实际操作之后发现 footerview 里的 listview 只显示一项,这个问题困扰了半天,一直没有找到合适的解决办法,直到昨天晚上偶然看到一篇博文介绍说,scrollview 里嵌套 listview 也出现了同样的问题,解决办法是动态设置 listview 的高度,于是我用这种方法也试了试,结果还真解决了。 关键代码 动态设置 listview 的高度: public void setListVi...

Read more