二叉树

定义

二叉树也称为二分树,它是有限的结点集合,这个集合或为空,或由一个根结点和两棵互不相交的称为左子树和右子树的二叉树组成。
显然,和树的定义一样,二叉树的定义也是一个递归定义。二叉树的结构简单,存储效率高,其运算实现也相对简单。因此,二叉树在树形结构中具有很重要的地位。
二叉树中的许多概念(例如结点的度、孩子结点、双亲结点、层次结点、子孙结点和祖先结点等)与树中的概念相同。在含n个结点的二叉树中,所有结点的度小于等于2,(0,1,2),通常用n0表示叶子结点个数、n1表示单分支结点个数、n2表示双分支结点个数。
需要注意二叉树和树是两种不同的树形结构,不能认为二叉树就是度为2的树(2次树),实际上二叉树和度为2的树是不同的,差别如下:
①、度为2的树中至少有一个结点的度为2,也就是说,度为2的树中至少有3个结点,而二叉树没有这种要求,二叉树可以为空。
②、度为2的树中一个度为1的结点不区分左、右子树,而二叉树中一个度为1的结点是严格区分左、右子树的。

基本形态

二叉树有5种基本形态,如下图所示,任何复杂的二叉树都是这5种基本形态的组合。
在这里插入图片描述

性质

①:非空二叉树上叶子结点数等于双分支结点数+1
②:非空二叉树的第 i 层上最多有2i-1个结点(i≥1)
③:高度为h的二叉树最多有2h-1个结点(h≥1)
说明:当这棵二叉树是满二叉树时,它的结点数达到最大值
④:高度为h的二叉树最少由h个结点(h≥1)
说明当这棵二叉树的每一层都只有一个结点时,h层至少有h个结点

例题

一棵二叉树中有7个叶子结点和5个单分支结点,其总共有()个结点。
A. 16
B. 18
C. 12
D. 31
解析:由二叉树的性质:非空二叉树上叶子结点数等于双分支结点数+1,可以得出双分支结点为6,而二叉树的特点:所有结点的度小于等于2,(只有0,1,2三种)所以总结点数=叶子结点数+单分支结点数+双分支结点数=7+5+6=18。选B

一棵二叉树中有35个结点,其中所有结点的度之和是()。
A. 35
B. 16
C. 33
D. 34
解析:无论是树还是二叉树都有一样的特点:总结点数=所有结点的度之和+1。由此可算出:所有结点的度之和=总结点数-1=35-1=34。选D

高度为5的二叉树至多有 ()个结点。
A. 16
B. 32
C. 31
D. 10
解析:由二叉树的性质:高度为h的二叉树最多有2h-1个结点(h≥1)可知高度为5的二叉树至多有25-1=31个结点。选C

高度为5的二叉树至少有()个结点。
A. 5
B. 6
C. 7
D. 31
解析:由二叉树的性质:高度为h的二叉树最少有h个结点(h≥1)可知高度为5的二叉树至少有5个结点。选A

二叉树第i层上至多有()个结点。
A. 2i
B. 2i-1
C. 2i-1-1
D. 2i-1
解析:由二叉树的性质:非空二叉树的第 i 层上最多有2i-1个结点(i≥1)。选B

一个具有1025个结点的二叉树的高h为()。
A. 11
B. 10
C. 11~1025
D. 12~1024
解析:由二叉树的性质:当二叉树为满二叉树时,树的高度最低,根据满二叉树的特点:含n个结点的满二叉树的高度为log2(n+1)即log21026约等于210=1204,还剩2个结点 前面10层已经排满了,剩下两个只能排到第11层所以当树的高度最低时是11,最高的情况就是每一层都只有一个结点,可以排1025层。所以一个具有1025个结点的二叉树的高h为11~1025。选C

若一棵有n个结点的二叉树,其中所有分支结点的度均为k,该树中的叶子结点个数是 。
A. n(k-1)/k
B. n-k
C. (n+1)/k
D. (nk-n+1)/k
解析:
树的根部为一个节点,那么第2层就有k个节点,这k个节点依次又有k个节点,那么第3层就有k²个节点,第4层就有k³个节点,……
假设有m层,那么叶子节点数为第m层的节点数:km-1
所有的节点数为1+k+k²+k³+…+km-1= 1 − k m 1 − k 1-k^m \over 1-k 1k1km =n
得到k^m=nk-n+1,
所以k(m-1)= k m k k^m \over k kkm= n k − n + 1 k nk-n+1\over k knkn+1
所以选择D

评论 2
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

打赏作者

立志Java工程师

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

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

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

打赏作者

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

抵扣说明:

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

余额充值