文章目录

  • 一、二叉树的概念及结构
    • 1.概念
    • 2.现实中的二叉树
    • 3. 特殊的二叉树:
    • 3.二叉树的性质
    • 二、二叉树练习题
  • 总结

一、二叉树的概念及结构

1.概念

一棵二叉树是结点的一个有限集合,该集合:

  1. 或者为空
  2. 由一个根节点加上两棵别称为左子树和右子树的二叉树组成

    如上图就是二叉树,可以看出:
    1.二叉树每个节点的度<=2

2. 二叉树的子树有左右之分,次序不能颠倒,因此二叉树是有序树

注意:对于任意的二叉树都是由以下几种情况复合而成的:

2.现实中的二叉树

3. 特殊的二叉树:

1)满二叉树:一个二叉树,如果每一个层的结点数都达到最大值,则这个二叉树就是满二叉树。也就是说,如果一个二叉树的层数为K,且结点总数是2^K-1 ,则它就是满二叉树。

如上图:这是一棵满二叉树:
推导:


该二叉树的高度是h = 4.
则该二叉树的节点总数Sn = 2^0 + 2^1 + 2^2 + …+2^h-1

由等比数列求前n项和公式:

带入数据:
Sn = 2^h -1 (Sn为二叉树节点总数,h为树的高度)

所以这就是一棵标准的满二叉树。

如果我们知道一棵满二叉树的总节点个数,也可以推导出改满二叉树的节点的高度

推导如下:

h = log2(Sn+1)

2)完全二叉树:完全二叉树是效率很高的数据结构,完全二叉树是由满二叉树而引出来的。对于深度为K的,有n个结点的二叉树,当且仅当其每一个结点都与深度为K的满二叉树中编号从1至n的结点一一对应时称之为完全二叉树。

通俗地讲:
1)前面每层节点的度都是2
2)最后一层节点必须连续

要注意的是满二叉树是一种特殊的完全二叉树。
比如说下面这个:


解释如下:

如果是这几种情况,就不是完全二叉树:

因为它们不符合第二点要求:最后一层是连续的。

由满二叉树和二叉树的定义可知,满二叉数是特殊的完全二叉树。

类似地:当我们知道完全二叉树的节点数,可以推导完全二叉树的高度:

3.二叉树的性质

1. 若规定根节点的层数为1,则一棵非空二叉树的第n层上最多有2^(n-1) 个结点.
2. 若规定根节点的层数为1,则深度为h的二叉树的最大结点数是2^h - 1 .
3. 若规定根节点的层数为1,具有n个结点的满二叉树的深度,h= log2(n+1). (ps: 是log以2为底,n+1为对数)

4. 对任何一棵二叉树, 如果度为0其叶结点个数为n0, 度为2的分支结点个数为n2 ,则有 n0= n2+1
第四点解析:
以下图为例,度为0的节点的个数有4个,度为2的节点的个数有3个,则n0 = n2 + 1

5. 对于具有n个结点的完全二叉树,如果按照从上至下从左至右的数组顺序对所有节点从0开始编号,则对
于序号为i的结点有:

1)若i>0,i位置节点的双亲序号:(i-1)/2;i=0,i为根节点编号,无双亲节点

2)若2i+1<n,左孩子序号:2i+1,2i+1>=n否则无左孩子

3) 若2i+2<n,右孩子序号:2i+2,2i+2>=n否则无右孩子

以该例子为例套进去即可。

前面三点是上面推导过的,第四点和第五点是重点要记忆的


二、二叉树练习题

1. 某二叉树共有 399 个结点,其中有 199 个度为 2 的结点,则该二叉树中的叶子结点数为( )
A 不存在这样的二叉树
B 200
C 198
D 199

解析:

运用上面所讲的性质四即可秒杀。
4. 对任何一棵二叉树, 如果度为0其叶结点个数为n0, 度为2的分支结点个数为n2 ,则有 n0= n2+1

度为2的节点有199个,即n2 = 199,那么度为n0的节点 = n2+1 = 200

2.在具有 2n 个结点的完全二叉树中,叶子结点个数为( )
A n
B n+1
C n-1
D n/2

解析:

假设这棵完全二叉树的度为0,1,2的节点个数分别为:
x0 ,x1,x2
有: x0+x1+x2 = 2n
又根据性质四,x0 = x2 + 1,所以化简一下得:
x2+1+x1+x2 = 2n
对于一棵完全二叉树来说,度为1的节点的个数要么为0,要么为1

以上面这棵完全二叉树为例,度为1的节点只有1个

以上面这棵完全二叉树的节点为例:度为1的节点有0个。
所以对于任何一颗完全二叉树来说,度为1的节点只有1个或0个。
则x1 = 1或x1 = 0
当x1 = 1时,
x2+1+x1+x2 = 2n -->2*x2 + 2 = 2n,
所以x2 = n

而当x1 = 0时,2*x2+1 = 2n,x2 = (2n-1)/2,节点个数不可能为小数,所以不成立
所以该完全二叉树的度为1的节点个数为n

3.一棵完全二叉树的节点数位为531个,那么这棵树的高度为( )
A 11
B 10
C 8
D 12

解析:
以这棵二叉树为例:
对于一棵完全二叉树,节点个数与高度的关系有:
n = 2^h-1-x(x为完全二叉树最后一层中缺少的节点的个数)
缺少的节点是相对于满二叉树来说的。

x的最好情况和最坏情况如下:

当h = 10时,节点个数为 2^10 - 1 - x ,
此时x的取值范围是[0,2^9-1-1],即[0,510]
代入原数据 531 = 2^10 -1 -x,x = 492,在取值范围内。

当n = 11时,节点个数为2^11 -1 -x,
此时x的取值范围是[0,2^10-1-1],即[0,1022]
代入原数据 531 = 2^11 -1 -x,x = 1516,不在取值范围内,不成立。
而对于当h = 12时,更不可能了。
对与h = 8,2^8 = 256,也不可能
所以h = 10,选B

4.一个具有767个节点的完全二叉树,其叶子节点个数为()
A 383
B 384
C 385
D 386

解析:

这道题的解法与第2题解法相同
直接画图分析:

总结

熟知二叉树的相关知识概念和性质,非常有助于进一步二叉树广度优先搜索和深度优先搜索的学习。

【数据结构之二叉树】——二叉树的概念及结构,特殊的二叉树和二叉树性质相关推荐

  1. 数据结构笔记(1)——二叉树的基本概念+存储结构及转化

    数据结构二叉树笔记(1) 二叉树定义 二叉树,有序树,无序树的区别 一个三结点的有序树,无序数,二叉树的排列 1.无序树 2.有序树 3.二叉树 二叉树的路径和路径长度 二叉树的性质 树的存储结构 1 ...

  2. 数据结构——数和二叉树的概念和结构

    目录 一.数的概念及结构 1.1 树的概念 1.2 树的相关概念 1.3 树的表示 1.4 树的应用 二.二叉树概念及结构 2.1 概念 2.2 特殊的二叉树 2.3 二叉树的性质 2.4 二叉树的存 ...

  3. 【数据结构基础/接口函数编写】二叉树第一弹之树和堆的概念和结构、基础堆接口函数的实现(编写思路加逻辑分析加代码实操,一应俱全的汇总)

    文章目录 树的概念及结构 树的概念 树的相关概念 树的表示 二叉树的概念及结构 二叉树的概念 特殊的二叉树: 二叉树的存储结构 二叉树的性质 顺序储存 链式储存 堆 堆的概念及结构 堆的实现 头文件 ...

  4. 数据结构——树及二叉树的概念及结构的了解

    文章目录 一.树概念及结构? 1.树的概念 2.树的相关概念 3.树的表示 4. 树在实际中的运用 二.叉树的概念及结构 1.概念 2.现实中的二叉树 3.特殊的二叉树 4.二叉树的性质 5.二叉树的 ...

  5. 【数据结构】二叉树的概念及结构

    提示:学习此篇博客之前,可以先学习[数据结构]树的概念及结构. 文章目录 前言 1.二叉树的概念 2.特殊的二叉树 3.二叉树的性质 4.二叉树的存储结构 前言 普通二叉树,很难构成现实的应用场景,但 ...

  6. 【数据结构】 树与二叉树的基本概念、结构特点及性质

    前言:本章内容主要是数据结构中树与二叉树的基本概念.结构特点及性质的引入. 文章目录 树的概念 树的特点: 树的常用术语: 树的表示: 代码创建: 树在实际中的应用: 二叉树的概念 特殊的二叉树 满二 ...

  7. 考研复习之数据结构笔记(九)树(上)(树和二叉树的概念、特征、性质及相关实例)

    目录 一.树的基本概念和术语 1.1 基本定义与特点 (1)基本定义: (2)基本特点 1.2 树的基本术语 1.3 树的基本性质 二.二叉树 2.1 二叉树的定义与性质 (1)基本概念 (2)与树的 ...

  8. 线索二叉树是一种什么结构_技术面试之常用的数据结构

    技术面试,数据结构很重要,作为提醒和重点 1.栈:(stack)先进后出,后进先出:一个开口 2.队列:(queue)先进先出 3.二叉树:每个节点至多只有两颗子树,有顺序存储结构和链式存储结构. 4 ...

  9. 二叉树的基本概念(定义,特性,存储结构等)

        一.二叉树的定义     二叉树(Binary Tree)是n(n>=0)个数据元素的有限集合,该集合可以为空(空二叉树),也可以由一个称为根(root)的元素及两个不相交的,被分别称为 ...

最新文章

  1. html如何给文字添加阴影效果,css中怎么给字体添加阴影效果
  2. windows c 操作mysql_windows下c/C++操作Mysql的一些总结(绝对精华,不要错过)
  3. 专访元知科技崔兴龙:这位十几年前就在做AI研究的“谷歌老兵”,现在已经把AI用在了12个赛道上...
  4. 【uniapp】 class表达式
  5. Kubernetes共享使用Ceph存储
  6. 蓝桥杯历届试题----矩阵翻硬币
  7. php 采集百度,PHP抓取百度内容有哪些方法
  8. php怎么连接数据库6,PHP连接数据库的步骤
  9. JMETER 第一个实践例子
  10. 从程序员角度--解决ipad白苹果问题的最佳办法---纠正网上的错误言论
  11. Redis (三)雪崩和穿透
  12. jQuery+CSS五类验证码(字母、数字、滑动、点击)
  13. oracle typehandler,Mybatis实现自定义的类型转换器TypeHandler
  14. habernet备份mysql_harbor 安装
  15. 古代汉语(王力版)笔记 绪论
  16. 电影院购票系统ssm (含论文)
  17. linux中patch补丁的文件格式和使用
  18. bgp高防-服务器单线、双线、三线、BGP线路哪个更好?
  19. 易烊千玺领衔,潮流自拍手机华为nova5系列发布
  20. 对房地产交易-租房的思考

热门文章

  1. 智能优化与机器学习结合算法实现时序数据预测matlab代码清单
  2. OPCODES学习网址
  3. 猿创征文|浅谈区块链-区块链是什么?
  4. source命令的用法
  5. 直方图均衡化和直方图匹配
  6. C++关于利用_kbhit()函数持续获取键盘输入的一点心得。
  7. violate,synchronized
  8. violate与线程安全
  9. Asp.Net 汉字转(拼音)
  10. Spring IoC是什么