一棵有点权的有根树如果满足以下条件,则被称为对称二叉树: (1)二叉树; (2)将这棵树所有结点的左右子树交换,新树和原树对应位置的结构相同且点权相等。 图4.13中结点内的数字为权值,结点外的id表示结点编号。 现在给出一棵二叉树,希望你找出它的一棵子树,该子树为对称二叉树,且结点数最多。 注意:只有树根的树也是对称二叉树。本题中约定,以结点T为子树根的一棵“子树”指的是:结点T和它的全部后代结点构成的二叉树。
第一行一个正整数n(n≤106),表示给定的树的结点的数目,规定结点编号1∼n,其中结点1是树根。 第二行n个正整数,用一个空格分隔,第i个正整数vi(vi≤1 000)代表结点i的权值。 接下来n行,每行两个正整数li,ri,分别表示结点i的左右子结点的编号。如果不存在左/右子结点,则以-1表示。两个数之间用一个空格隔开。
输出文件共一行,包含一个整数,表示给定的树的最大对称二叉子树的结点数。
2 1 3 2 -1 -1 -1
1
10 2 2 5 5 5 5 4 4 2 3 9 10 -1 -1 -1 -1 -1 -1 -1 -1 -1 2 3 4 5 6 -1 -1 7 8
3
最大的对称二叉子树为以结点7为树根的子树,结点数为3
时间限制 | 1 秒 |
内存限制 | 128 MB |