数据结构复习(十二)之平衡二叉树及哈夫曼树

平衡二叉树需要保证在插入和删除二叉树结点时,任意结点的左、右子树的高度差绝对值不超过1,所以平衡二叉树或者为一棵空树,或者为具有左子树和右子树都为平衡二叉树的性质。插入和删除时出现不满足条件时可进行一定的调整,分为LL平衡旋转、RR平衡旋转、LR平衡旋转、RL平衡杆旋转。

哈夫曼树又称为最优二叉树,使得带权路径长度WPL最小,哈夫曼树的构造可以按照哈夫曼算法:

  1)将这N个结点分别作为N棵仅含一个结点的二叉树,构成森林F。
  2)构造一个新结点,并从F中选取两棵根结点权值最小的树作为新结点的左、右子树,并且将新结点的权值置为左、右子树上根结点的权值之和。
  3)从F中删除刚才选出的两棵树,同时将新得到的树加入F中。

  4)重复步骤2)和3),直至F中只剩下一棵树为止。

从上述构造过程中可以看出哈夫曼树具有如下特点:
  1)每个初始结点最终都成为叶结点,并且权值越小的结点到根结点的路径长度越大。

  2)构造过程中共新建了N-1个结点(双分支结点),因此哈夫曼树中结点总数为2N-1。

  3)每次构造都选择2棵树作为新结点的孩子,因此哈夫曼树中不存在度为1的结点。

 

猜你喜欢

转载自blog.csdn.net/weixin_42713048/article/details/81436855