【数据结构】树-二叉树的性质(图解、例题)

GitHub同步更新(已分类)Data_Structure_And_Algorithm-Review

公众号:URLeisure 的复习仓库
公众号二维码见文末

以下是本篇文章正文内容,下面案例可供参考。


二叉树的概述

  • 二叉树(binary tree)是 n(n ≥ 0)个节点构成的集合,它或为空树(n = 0),或满足以下两个条件:
    1. 有且仅有一个称为根的节点
    2. 除根结点以外,其余节点分别为两个互不相交的子集 T1 和 T2 ,分别称为T的左子树和右子树,且 T1 和 T2 本身都是二叉树
  • 二叉树是一种特殊的树,它最多有两个子树,分别为左子树和右子树,二者是有序的,不可交换的
  • 也就是说,二叉树不存在度大于2的节点。

二叉树的 5 种状态:

五种

  • 二叉树的结构最简单,规律性最强,因此通常被作为重点。

满二叉树

  • 一棵深度为 k 且有 2 k 2^k 2k - 1(性质二)个节点的二叉树。

  • 满二叉树每一层都“充满”了节点,达到最大节点数。

满二叉树

完全二叉树

  • 除了最后一层外,每一层都是满的(最大节点数,性质一),最后一层节点是从左向右出现的。
    完全二叉树

  • 如图,完全二叉树除了最后一层,前面每一层都必须是满的,最后一层必须从左向右排列。

  • 如果 2 没有左孩子,就不可以有右孩子(没有 4,就不允许有 5 和 6)。

  • 如果 2 没有右孩子,3 就不能有左孩子(没有 5,就不允许有 6)。

二叉树的性质

性质一

在二叉树的第 i 层上至多有 2 i − 1 2^{i-1} 2i1个节点

性质一

性质二

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

Σ i = 1 k 2 i − 1 = 2 0 + 2 1 + . . . + 2 k − 1 = 2 k − 1 \Sigma_{i=1}^k 2^{i-1} = 2^0 + 2^1 + ... + 2^{k-1} = 2^k -1 Σi=1k2i1=20+21+...+2k1=2k1

性质二

性质三

对于任何一棵二叉树,若叶子树为 n0,度为 2 的节点数为 n2,则 n0 = n2 + 1

证明:

  1. 二叉树中的节点度数不超过 2,因此一共有 3 种节点。度分别为 0、1、2。设二叉树总结点数为 n,其余分别为 n0,n1,n2。则 n = n0 + n1 + n2
  2. 设总分支数为 b。已知 n = b + 1
  3. 度为 0 的节点有 0 个分支,度为1的节点有 1 个分支,度为 2 的节点有 2 个分支。b = n1 + 2n2
  4. 2.3 联立,得 n = n1 + 2n2 +1。代入 n = n0 + n1 + n2化简得 n0 = n2 + 1

性质四

具有n个节点的完全二叉树的深度必为 [log2n] + 1,也就是 floor(log2n)+1
(参考性质二)

性质五

对于完全二叉树,若从上至下、从左至右编号,则编号为 i 的节点,其左孩子编号必为 2i,其右孩子编号必为 2i + 1,其双亲的编号必为 i/2

在这里插入图片描述

例题

1.一棵完全二叉树有 1001 个节点,其中叶子节点的个数是多少?

由完全二叉树的定义可知,1001 的双亲节点是最后一个拥有子叶的节点,其后面到 1001 全是叶子
1001 − [ 1001 ÷ 2 ] = 501 1001 - [1001 ÷ 2 ] = 501 1001[1001÷2]=501

2.一棵完全二叉树第 6 层有 8 个叶子,则该完全二叉树最少有多少个节点,最多有多少个节点?

1). 完全二叉树的叶子分布在最后一层,该树有 6 层。即第 6 层有 8 个叶子,而前 5 层都是满的。

2 5 − 1 + 8 = 39 2^5 - 1 + 8 = 39 251+8=39

2). 完全二叉树的叶子分布在倒数第二次和最后一层,该树有7层,前六层是满的。即第 6 层的最后 8 个节点无子节点,第 7 层都是叶子。

2 7 − 1 − 2 × 8 = 111 2^7 - 1 - 2 × 8 = 111 2712×8=111


关注公众号,感受不同的阅读体验

请添加图片描述

下期预告:二叉树的存储结构

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

扑腾的江鱼

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值