5551: [GESP202606 六级] 满二叉树

文件提交:无需freopen 内存限制:128 MB 时间限制:1.000 S
评测方式:普通裁判
金币值:
命题人:
提交:5 解决:0

题目描述

# [GESP202606 六级] 满二叉树 ## 题目描述 给定一棵包含 $n$ 个结点的有根二叉树,结点依次以 $1, 2, \dots, n$ 编号,根结点编号为 $1$。 对于结点 $i$,其左儿子的编号记为 $l_i$,右儿子编号记为 $r_i$。特别地,如果左儿子不存在则 $l_i = 0$,如果右儿子不存在则 $r_i = 0$。 树中每个结点都对应一棵以其为根的子树。请你求出给定有根树的所有 $n$ 棵子树中,有多少棵子树是满二叉树。 满二叉树是指所有叶子深度均相同,且除叶子外均有两个儿子的二叉树,例如以下三棵二叉树均是满二叉树: ``` () () () / \ / \ () () () () / \ / \ () ()() () ``` 在上面这棵有 $3$ 个节点的二叉树中,有 $3$ 个子树是满二叉树(包括整个树本身,及所有的单个叶子节点); 又例如, ``` (1) / \ (2) (3) / \ (4) (5) ``` 在上面这棵有 $5$ 个节点的二叉树中,有 $4$ 个子树是满二叉树(包括节点 $3$ 的子树,以及所有单个叶子节点)。 ## 输入格式 第一行,一个正整数 $n$,表示有根二叉树结点数量。 接下来 $n$ 行,每行两个非负整数 $l_i, r_i$,表示结点 $i$ 的左儿子编号和右儿子编号,整数之间以空格分隔。 ## 输出格式 输出一行,一个整数,表示所有子树中满二叉树的数量。 ## 输入输出样例 #1 ### 输入 #1 ``` 4 2 3 4 0 0 0 0 0 ``` ### 输出 #1 ``` 2 ``` ## 输入输出样例 #2 ### 输入 #2 ``` 3 2 3 0 0 0 0 ``` ### 输出 #2 ``` 3 ``` ## 说明/提示 ### 数据范围 对于 $40\%$ 的测试点,保证 $1 \le n \le 500$。 对于所有测试点,保证 $1 \le n \le 10^5$。