完全二叉树

完全二叉树

若设二叉树的高度为h,除第 h 层外,其它各层 (1~h-1) 的结点数都达到最大个数,第 h 层从右向左连续缺若干结点,这就是完全二叉树

完全二叉树特点
  1. 叶子结点只可能在最大的两层上出现,对任意结点,若其右分支下的子孙最大层次为L,则其左分支下的子孙的最大层次必为L 或 L+1;
  2. 出于简便起见,完全二叉树通常采用数组而不是链表存储,其存储结构如下:
    var tree:array[1…n]of longint;{n:integer;n>=1}
    对于tree[i],有如下特点:
    1. 若i为奇数且i>1,那么tree[i]的左兄弟为tree[i-1];
    2. 若i为偶数且i<n,那么tree[i]的右兄弟为tree[i+1];
    3. 若i>1,tree[i]的双亲为tree[i div 2];
    4. 若2i<=n,那么tree[i]的左孩子为tree[2i];若2i+1<=n,那么tree[i]的右孩子为tree[2i+1];
    5. 若i>n div 2,那么tree[i]为叶子结点(对应于(3));
    6. 若i<(n-1) div 2.那么tree[i]必有两个孩子(对应于(4))
完全二叉树叶子节点的算法

如果一棵具有n个结点的深度为k的二叉树,它的每一个结点都与深度为k的满二叉树中编号为1~n的结点一一对应,这棵二叉树称为完全二叉树。

  • 1
    点赞
  • 2
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值