满二叉树、完全二叉树、平衡二叉树、最优二叉树

目录

一、满二叉树

二、完全二叉树

堆排序实现过程(结构为完全二叉树)

三、平衡二叉树

四、最优二叉树(哈夫曼树)


一、满二叉树

  一棵二叉树的结点要么是叶子结点,要么它有两个子结点(如果一个二叉树的层数为K,且结点总数是(2^k) -1,则它就是满二叉树。)

  • 假设满二叉树的高度为hh\geq 1),那么
  1. i层的节点数量为:2^{i-1}
  2. 叶子节点数量为:2^{h-1}
  3. 总节点数量nn = 2^{h} -1 = 2^{0} + 2^{1} + 2^{3} + ......+ 2^{h-1}h=\log (n+1)\log的底为2.
  • 在同样高度的二叉树中,满二叉树的叶子节点数量最多,总节点数量最多

二、完全二叉树

  若设二叉树的深度为k,除第 k 层外,其它各层 (1~k-1) 的结点数都达到最大个数,第k 层所有的结点都连续集中在最左边,这就是完全二叉树。

  • 一棵有n个节点的完全二叉树(n>0),从上到下,从左到右对节点从0开始编号,对任意第i个节点

(1) 它的左孩子结点是:R[2*i+1];

(2) 它的右孩子结点是:R[2*i+2];

(3) 它的父结点是:R[(i-1)/2];

(4) R[i] <= R[2*i+1] 且 R[i] <= R[2i+2]。

性质1:

性质2:完全二叉树中,度为1的节点个数或者是0,或者是1

性质3:

堆排序实现过程(结构为完全二叉树)

首先,按堆的定义将数组R[0..n]调整为堆(这个过程称为创建初始堆),交换R[0]和R[n];

然后,将R[0..n-1]调整为堆,交换R[0]和R[n-1];

如此反复,直到交换了R[0]和R[1]为止。

三、平衡二叉树

  它或者是一颗空树,或它的左子树和右子树的深度之差(平衡因子)的绝对值不超过1,且它的左子树和右子树都是一颗平衡二叉树。

四、最优二叉树(哈夫曼树)

  树的带权路径长度达到最小,称这样的二叉树为最优二叉树,也称为哈夫曼树(Huffman Tree)。哈夫曼树是带权路径长度最短的树,权值较大的结点离根较近。

  • 2
    点赞
  • 14
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值