度为k的树的总节点数及叶子总数

问题: 对于一棵度为k的树,已知其中度为i的节点数为 n i n_i ni,求总节点数 n 0 n_0 n0及叶子总数 n n n


推导:

  1. 设一棵树T的度为 k , ( k < n ) k, (k<n) k,(k<n),已知其中度为i的节点数为 n i n_i ni,则:
    n = ∑ k = 0 n n i \begin{aligned} n=\sum_{k=0}^nn_i \\ \end{aligned} n=k=0nni

  2. 设树T的边数为 e e e,由于根节点入度为 0 0 0,其余各节点的入度均为 1 1 1,因此:
    e = n − 1 e = n-1 e=n1

  3. 对于度为 i i i的节点,由于其个数为 n i n_i ni,因此从这些节点出发的边数为
    e ′ = ∑ k = 1 n n i ∗ i \begin{aligned} e'=\sum_{k=1}^nn_i*i \\ \end{aligned} e=k=1nnii

  4. 显然上述 e ′ = e e'=e e=e,即:
    n − 1 = ∑ k = 1 n n i ∗ i \begin{aligned} n-1=\sum_{k=1}^nn_i*i \\ \end{aligned} n1=k=1nnii

  5. 从而:
    n = ∑ k = 1 n n i ∗ i + 1 \begin{aligned} n=\sum_{k=1}^nn_i*i+1 \\ \end{aligned} n=k=1nnii+1

  6. 因此对于度为k的树,其节点总数为其中具有不同度数的节点数与其度数的乘积再加一

  7. 结合两个节点总数公式,有:
    ∑ k = 0 n n i = ∑ k = 1 n n i ∗ i + 1 n 0 = ∑ k = 1 n n i ∗ i − ∑ k = 1 n n i + 1 \begin{aligned} \sum_{k=0}^nn_i=\sum_{k=1}^nn_i*i+1 \\ n_0=\sum_{k=1}^nn_i*i-\sum_{k=1}^nn_i+1 \end{aligned} k=0nni=k=1nnii+1n0=k=1nniik=1nni+1


特别的, 当 k = 2 k=2 k=2时,总结点数 n = n 1 + 2 ∗ n 2 + 1 n=n_1+2*n_2+1 n=n1+2n2+1,叶子节点数 n 0 = n 2 + 1 n_0=n_2+1 n0=n2+1


例题:

在一棵度为4的树T中,若有10个度为4的节点,30个度为3的节点,5个度为2的节点,10个度为1的节点,求T的叶子节点数。


由题意可以得出树T的节点总数
n = ∑ k = 1 n n i ∗ i + 1 = 10 ∗ 4 + 30 ∗ 3 + 5 ∗ 2 + 10 ∗ 1 + 1 = 151 n=\sum_{k=1}^nn_i*i+1=10*4+30*3+5*2+10*1+1=151 n=k=1nnii+1=104+303+52+101+1=151
因此叶子节点数
n 0 = n − ∑ k = 1 n n i = 151 − ( 10 + 30 + 5 + 10 ) = 96 n_0=n-\sum_{k=1}^nn_i=151-(10+30+5+10)=96 n0=nk=1nni=151(10+30+5+10)=96

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值