数据结构学习日志之十--二叉树

本文详细介绍了二叉树的五种形态,包括空二叉树、仅有根节点的二叉树等,并探讨了二叉树的性质,如层节点最大数量、满二叉树和完全二叉树的概念。此外,还讨论了二叉树的顺序存储和链式存储结构,强调了顺序存储结构只适用于完全二叉树的情况。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

二叉树是一种特殊的树型结构,它的特点是每个结点至多只有两棵子树(即二叉树中不存在度大于2的结点),并且,二叉树的子树有左右之分,其次序不能任意颠倒。


二叉树可以有5种形态,1.空二叉树 2.仅有根结点的二叉树 3.右子树为空的二叉树 4.左右子树非空的二叉树 5.左子树为空的二叉树

二叉树的性质

1.在二叉树的第i层至多有2^(i-1)次方个结点(i>=1)

2.深度为k的二叉树至多有2^k-1个结点

3.对任何一棵二叉树T,如果其终端结点数为n0,度为2的结点数为n2,那么n0 = n2 + 1;

一棵深度为k且有2^k-1个结点的二叉树称为满二叉树。

完全二叉树:假设二叉树深度为k,除第k层外,其他各层(1~k-1)的结点数都达到最大个数,第k层的结点都连续集中在最左边。如果将满二叉树从1至n开始编号,如果完全二叉树的结点数为n,那么当且仅当其每一个结点都与满二叉树编号从1至n的结点都一一对应。


完全二叉树有两个重要特性

1.具有n个结点的完全二叉树深度为floor(log2 n) +1 (floor为向下取整)

2.如果对一棵有n个结点的完全二叉树,则对任意一个结点i有

  • 如果i > 1,则其双亲PARENT(i)是结点floor(i/2)
  • 如果2i > n , 则结点i为叶子结点,否则其左孩子LCHILD(i)是结点2i
  • 如果2i+1 > n, 则结点i无右孩子;否则其右孩子RCHILD(i)是结点2i+1.

可以这么理解,对于任意一层k(k>1)的第一个结点编号为i,由二叉树性质2可得,i = 2^(k-1), 即是第k-1层最大数+1,那么它的左孩子肯定是第k+1层的第一个结点,编号是2^k = 2*(2^(k-1)) = 2i,若2i>n,则无左孩子;同理可得其他条件

二叉树的存储结构

1.顺序存储结构

用一组连续地址依次自上而下、自左至右存储完全二叉树上的结点元素。


图中以0表示不存在此结点,由此可见,这种顺序结构仅适用于完全二叉树,因为,在最坏的情况下,一个深度为k且只有k歌结点的单支树却需要长度为2^k-1的一维数组

2.链式存储结构


评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值