收集树上所有苹果的最少时间

1443. 收集树上所有苹果的最少时间

目录

1. 题目

1.1. 题目核心

给定一棵树,删除任意一个节点后,计算剩余部分的分数,找出能得到最高分的节点数量。

1.2. 分数计算规则

  • 删除一个节点后,树会分裂成几个部分
  • 分数 = 所有分裂部分的节点数量的乘积

1.3. 示例详解

1.3.1. 示例 1

输入:parents = [-1,2,0,2,0]

树的结构:
    0
   / \
  2   4
 / \
1   3

逐个删除节点分析:

  1. 删除节点 0:

    分裂成:
    [2,1,3] 和 [4]
    分数 = 3 × 1 = 3
    
  2. 删除节点 2:

    分裂成:
    [0,4] 和 [1] 和 [3]
    分数 = 2 × 1 × 1 = 2
    
  3. 删除节点 4:

    分裂成:
    [0,2,1,3]
    分数 = 4
    
  4. 删除节点 1 或 3:

    分裂成:
    [0,2,4,3] 或 [0,2,4,1]
    分数 = 4
    

结果:最高分是 4,有 3 个节点(1、3、4)可以得到这个分数。

1.3.2. 示例 2

输入:parents = [-1,2,0]

树的结构:
   0
    \
     2
    /
   1

删除每个节点的分析:

  1. 删除节点 0:

    分裂成:[2,1]
    分数 = 2
    
  2. 删除节点 1:

    分裂成:[0,2]
    分数 = 2
    
  3. 删除节点 2:

    分裂成:[0] 和 [1]
    分数 = 1 × 1 = 1
    

结果:最高分是 2,有 2 个节点(0、1)可以得到这个分数。

1.4. 关键点

  1. 对每个节点,需要考虑:
    • 父节点连通部分的大小
    • 各个子节点连通部分的大小
  2. 分数就是这些部分大小的乘积
  3. 统计获得最高分的节点数量