满二叉树
1 秒 / 测试点 · 512 MiB · 19 个测试点。
题目描述
给定一棵包含 个结点的有根二叉树,结点依次以 编号,根结点编号为1。
对于结点 ,其左儿子的编号记为 ,右儿子编号记为 。特别地,如果左儿子不存在则 ,如果右儿子不存在则 。
树中每个结点都对应一棵以其为根的子树。请你求出给定有根树的所有 棵子树中,有多少棵子树是满二叉树。
满二叉树是指所有叶子深度均相同,且除叶子外均有两个儿子的二叉树,例如以下三棵二叉树均是满二叉树:
() () () / \ / \ () () () () / \ / \ ()()()()例如,
() / \() ()在上面这棵有3个节点的二叉树中,有3个子树是满二叉树(包括整个树本身,及所有的单个叶子节点);
又例如,
(1) / \(2) (3) / \ (4) (5)在上面这棵有5个节点的二叉树中,有4个子树是满二叉树(包括节点3的子树,及所有的单个叶子节点)。
输入格式
第一行,一个正整数 ,表示有根二叉树结点数量。
接下来 行,每行两个非负整数 ,表示结点 的左儿子编号和右儿子编号,整数之间以空格分隔。
输出格式
输出一行,一个整数,表示所有子树中满二叉树的数量。
输入样例 1
42 34 00 00 0输出样例 1
2输入样例 2
32 30 00 0输出样例 2
3数据范围
对于40%的测试点,保证 。
对于所有测试点,保证 。
时间限制:1.0 s;内存限制:512.0 MB。