12 2020 档案
摘要:什么是赫夫曼树? 赫夫曼树(Huffman Tree)是指给定N个权值作为N个叶子结点,构造一棵二叉树,若该树的带权路径长度达到最小。哈夫曼树(也称为最优二叉树)是带权路径长度最短的树,权值较大的结点离根较近。 1 public class HNode<T> 2 { 3 public HNode()
阅读全文
摘要:为什么线索化二叉树? 对于二叉树的遍历,我们知道每个节点的前驱与后继,但是这是建立在遍历的基础上,否则我们只知道后续的左右子树。现在我们充分利用二叉树左右子树的空节点,分别指向当前节点的前驱、后继,便于快速查找树的前驱后继。 不多说,直接上代码: /// <summary> /// 线索二叉树 节点
阅读全文
摘要:对比上一篇文章“顺序存储二叉树”,链式存储二叉树的优点是节省空间。 二叉树的性质: 1、在二叉树的第i层上至多有2i-1个节点(i>=1)。 2、深度为k的二叉树至多有2k-1个节点(k>=1)。 3、对任何一棵二叉树T,如果其终结点数为n0,度为2的节点数为n2,则n0=n2+1。 4、具有n个节
阅读全文
摘要:什么是二叉树:每个树的节点只有两个子树的树形结构。 为什么使用顺序存储结构:使用数组存放满二叉树的各结点非常方便,可以根据一个结点的索引号很容易地推算出它的双亲、孩子、兄弟等结点的编号,从而对这些结点进行访问,这是一种存储二叉满二叉树或完全二叉树的最简单、最省空间的做法。 /// <summary>
阅读全文
摘要:c# linq用起来特方便,因此我们习惯性的用list来操作。 这里我们将 DataTable 一列转为List: List<T> homeworkIdList = (from r in dataTable.AsEnumerable() select r.Field<T>("列名")).ToList
阅读全文