树、二叉树、哈夫曼树

398 阅读2分钟

树(Tree)的定义

N个结点构成的有限集合

  • 树中有一个称为跟(root)的特殊结点
  • 其余结点可分为若干个互不相交的树,称为原来结点的"子树"

相关概念

  • 结点的度:结点的子树个数
  • 树的度:树中所有结点的最大的度
  • 叶子结点:度为0的结点
  • 父结点:有子树的结点是其子树的根节点的父结点
  • 子节点:若A是B的子结点,那么B就是A的父结点

树的特点

  • 子树是不相交的
  • 除了根节点外,每个节点有且只有一个父结点
  • 一个N个结点的树,只有N-1条边

非树

二叉树

  • 度为2的树(所有结点中最大的度为2)
  • 子树有左右之分

  • 树的路径长度:从树根到树中每一个结点的路径长度之和,在结点数目相同的二叉树中,完全二叉树的路径长度最短。

树的带权路径长度(WPL Weighted Path Length of Tree):

  • 结点的权:在一些应用中,赋予树中结点的一个有意义的数值
  • 结点的带权路径长度:结点到树根的路径长度与该节点权的乘积

哈夫曼树(最优二叉树)

带权路径最小


通过树解决实际问题

编码问题

给定一段字符串,如何对字符串进行编码,可以使得该字符串的编码存储空间最少?

【例子】假设一段文本,包含58个字符,并且由以下7个字符构成:a,b,c,d,e,f,g;这7个字符出现的频次不同,如何对这7个字符进行编码,使得总编码空间最小。

www.cs.usfca.edu/~galles/vis…