数据结构 第五章 树与二叉树 习题

5.1 树的基本概念

定义

在任意一棵非空树中应满足:
1)有且仅有一个特定的称为的结点。
2)当 n > 1 n>1 n>1时,其余节点可分为 m m m个互不相交的有限集 T 1 T 2 . . . T m T_1T_2...T_m T1T2...Tm,其中每个集合本身又是一棵树,称为根的子树

特点

树是一种递归的数据结构。
1)树的根结点没有前驱,除根节点外的所有结点有且只有一个前驱。
2)树中所有结点可以有零个或多个后继。
树适合表示有层次的数据结构,某个结点(除根节点外)最多只和其父节点有直接关系。

基本术语

结点的度:一个结点的孩子个数称为该结点的度。
树的度:树中结点的最大度数。
层次:从树根开始定义,根节点为第1层。
深度:从根节点开始自顶向下逐层累加。
高度:从叶结点开始自底向上逐层累加。
树的高度(或深度):树中结点的最大层数。
树的路径长度:树根到每个结点的路径长度的总和。

树的性质

1)树中的结点数等于所有结点的度数加1
2)度为 m m m的树中第 i i i层上至多有 m i − 1 m^{i-1} mi1个结点
3)高度为 h h h m m m叉树至多有 ( m h − 1 ) ( m − 1 ) (m^h-1)(m-1) (mh1)(m1)个结点
4)具有 n n n个结点的 m m m叉树的最小高度为 ⌈ l o g m ( n ( m − 1 ) + 1 ) ⌉ \lceil log_m(n(m-1)+1)\rceil logm(n(m1)+1) n ( m − 1 ) n(m-1) n(m1)为假设每层都有m-1个分支时的情况。

习题5.1

  1. 树的度为n,结点数为x,求最小高度h
    求最小高度则树一定是完全n叉树,即每个结点的度数都为n,因此树的最小高度为 ⌈ l o g n ( 2 x + 1 ) ⌉ \lceil log_n(2x+1) \rceil logn(2x+1)

  2. 树的度为x,至少有几个结点?
    树高h+x-1个结点(从根到h-1层都只有1个结点,最后一层有x个结点)

  3. 树的高度为h,度为x,至多有几个结点?
    完全x叉树,最多有 1 + x + x 2 + . . . + x h − 1 1+x+x^2+...+x^{h-1} 1+x+x2+...+xh1

  4. 树的度为n,求叶结点
    按照条件求出总结点树-非叶结点树

  5. 总结点数= n 0 + n 1 + . . . + n m n_0+n_1+...+n_m n0+n1+...+nm

  6. 总分支数= 1 n 1 + 2 n 2 + . . . + m n m 1n_1+2n_2+...+mn_m 1n1+2n2+...+mnm

  7. 总结点数= 总 分 枝 数 + 1 总分枝数+1 +1

简答题

  1. 含有n个结点的三叉树的最小高度是多少?
    最小高度的三叉树一定是完全三叉树,即每个结点的度都为3,设最小高度为h,则有 1 + 3 + 3 2 + . . . + 3 h − 2 < n ≤ 1 + 3 + 3 2 + . . . + 3 h − 1 1+3+3^2+...+3^{h-2}<n≤1+3+3^2+...+3^{h-1} 1+3+32+...+3h2<n1+3+32+...+3h1,即 ( 3 h − 1 − 1 ) / 2 < n ≤ ( 3 h − 1 ) / 2 (3^{h-1}-1)/2<n≤(3^{h}-1)/2 (3h11)/2<n(3h1)/2,得 3 h − 1 < 2 n + 1 ≤ 3 h 3^{h-1}<2n+1≤3^h 3h1<2n+13h h ≥ l o g 3 ( 2 n + 1 ) h≥log_3(2n+1) hlog3(2n+1),因此h为 ⌈ l o g 3 ( 2 n + 1 ) ⌉ \lceil log_3(2n+1) \rceil log3(2n+1)

  2. 已知一棵度为4的树中,度为0,1,2,3的结点数分别为14,4,3,2,求该树的结点总数和度为4的结点个数,并给出推导过程。
    设树中度为 i i i的结点数分别为 n i n_i ni,树中结点总数为 n n n,则 n = 分 支 数 + 1 n=分支数+1 n=+1,而分支数等于树中各结点的度之和,因此 n = 1 + n 1 + 2 n 2 + 3 n 3 + 4 n 4 = n 0 + n 1 + n 2 + n 3 + n 4 n=1+n_1+2n_2+3n_3+4n_4=n_0+n_1+n_2+n_3+n_4 n=1+n1+2n2+3n3+4n4=n0+n1+n2+n3+n4
    由上式得, 1 + 4 + 3 ∗ 2 + 2 ∗ 3 + 4 n 4 = 14 + 4 + 3 + 2 + n 4 1+4+3*2+2*3+4n_4=14+4+3+2+n_4 1+4+32+23+4n4=14+4+3+2+n4,得 n 4 = 2 n_4=2 n4=2,因此度为4的结点数为2,共有25个结点。

  3. 已知一棵度为m的树中,有 n 1 n_1 n1个度为1的结点,有 n 2 n_2 n2个度为2的结点……有 n m n_m nm个度为m的结点,问该树有多少个叶结点?
    1 + n 1 + 2 n 2 + . . . + m n m − ( n 1 + n 2 + . . . + n m ) = ∑ i = 2 m ( i − 1 ) n i 1+n_1+2n_2+...+mn_m-(n_1+n_2+...+n_m)=\sum_{i=2}^m(i-1)n_i 1+n1+2n2+...+mnm(n1+n2+...+nm)=i=2m(i1)ni

5.2

二叉树的定义及其主要特性

定义

二叉树:每个结点至多有两颗子树(即二叉树中不存在度大于2的结点),分左右子树,不能颠倒次序。
二叉树是有序树,其基本形态如图。
二叉树的5种基本形态

特殊的二叉树

满二叉树

高度为 h h h,含有 2 h − 1 2^h-1 2h1个结点的二叉树。
对二叉树按层序编号:根节点编号为1,从根节点自上而下,自左而右。
对编号为 i i i的结点,其双亲为 ⌊ i / 2 ⌋ \lfloor i/2 \rfloor i/2,若有左孩子,则左孩子为 2 i 2i 2i;若有右孩子,则右孩子为 2 i + 1 2i+1 2i+1
满二叉树

完全二叉树

高度为 h h h,含有 n n n个结点的二叉树,当且仅当其每个结点都与高度为 h h h的满二叉树中编号为1~n的结点一一对应时,称为完全二叉树。
完全二叉树

  1. i ≤ ⌊ n / 2 ⌋ i≤\lfloor n/2 \rfloor in/2,则结点 i i i为分支结点,否则为叶子结点。
  2. 叶子结点只可能在层次最大的两层上出现。最大层次中的叶子结点都依次怕lie在该层最左边的位置上。
  3. 若有度为1的结点,则只可能有一个,且该节点只有左孩子而无右孩子。
  4. 按层序编号后,一旦出现某结点 i i i为叶子结点或只有左孩子,则编号大于 i i i的结点均为叶结点。
  5. 若n为奇数,则每个分支都有左、右孩子;若n为偶数,则编号最大的分支结点 n / 2 n/2 n/2只有左孩子,没有右孩子。

二叉排序树

左子树上所有结点的值均小于根节点的值;右子树上的所有结点的值均大于根节点的值;左右子树又各是一棵二叉排序树。

平衡二叉树

树上任一结点的左子树和右子树的深度之差不超过1.

二叉树的性质

  1. 非空二叉树的叶子结点数等于度为2的结点数+1,即 n 0 = n 2 + 1 n_0=n_2+1 n0=n2+1
  2. 非空二叉树上第 k k k层上至多有 2 k − 1 个 结 点 2^{k-1}个结点 2k1
  3. 高度为
  • 3
    点赞
  • 26
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值