一、树
一个树,除了根节点之外,其它结点都有且仅有一个双亲结点
树的度:结点的度的最大值
二、森林
多个树组成森林
三、赫夫曼树
树的路径长度:从树的根结点到每一个结点的路径的长度之和
书的带权路径长度:树中所有叶子结点的带权路径长度之和
最优二叉树(赫夫曼树):带权路径最小的二叉树
构造赫夫曼树???(赫夫曼算法)
(1)给定n个权值,,这n个权值构成n棵二叉树,这n棵二叉树都只有根节点,这n棵二叉树构成集合F
(2)在集合F中,找出两个根节点的权值最小的书,作为左右子树,构造成一棵新的二叉树,这棵新的二叉树的根节点的权值是它的左右子树的根节点的权值之和
(3)从集合F中删除上述两个根结点,并将新二叉树的根结点加入集合F中
(4)重复(2)(3)直到集合F中仅含有一棵二叉树
赫夫曼编码
设计一颗赫夫曼树,由此得到的二进制前缀编码就叫做赫夫曼编码
前缀编码:任何一个字符的前缀编码都不是另一个字符的编码的前缀
赫夫曼树没有度为1的结点,并且,一开始给定的n个权值对应的节点一定是叶子节点,因此,赫夫曼树的叶子节点是n,结点的总个数是2n-1
四、树的计数问题
具有n个结点的不同形态的树有多少棵tn
树的孩子兄弟表示法,将一棵树表示成一颗没有右孩子的二叉树
已知,具有n个结点的二叉树的不同形态有bn种,由于树是一颗没有右子树的二叉树,因此tn = bn-1