本题要求统计二叉树中有多少棵子树是饱和谱系(即满二叉树)。根据定义,饱和谱系必须满足:每个非叶子节点都有两个子节点,并且所有叶子节点的深度相同。
我们可以使用动态规划自底向上判断每个节点为根的子树是否为饱和谱系,并记录其高度。具体思路如下:
dp[i] 表示以细胞 i 为根的子树是饱和谱系时的高度(叶子高度为 1)。若该子树不是饱和谱系,则 dp[i] = 0。在实验室中,科学家记录了一种单细胞生物的分裂过程,形成了一个包含 n 个细胞的谱系树,其结构是一棵二叉树。每个细胞都有一个从 1 到 n 的编号,并可能分裂出左子细胞和右子细胞。
定义一棵子树为“饱和谱系”,当且仅当该子树中每一代(层)的细胞数量都达到了该代的最大可能数量,即无法在同一层增加新的细胞。换言之,饱和谱系是一棵每个非叶子节点都有两个子节点且所有叶子节点深度相同的二叉树。
现在给定这棵细胞谱系树,请你计算有多少个细胞,满足以该细胞为根的子树是饱和谱系。
节点总数 n 满足 1≤n≤105。
Scan the QR code below with WeChat to sign in
First-time scan will create your account automatically
请使用微信扫描下方二维码完成注册