#25. 「2022 远光杯」平衡二叉搜索树

内存限制:128 MiB 时间限制:3000 ms 标准输入输出
题目类型:传统 评测方式:文本比较
上传者: woruo

题目描述

当一棵二叉树满足对于任意子树,其左子树(若有)中节点的值均不大于该节点的值,右子树(若有)中节点的值均不小于该节点的值,则我们称这棵树为二叉搜索树。

进一步地,若这棵树还满足对于任意节点,其左子树高度与右子树高度的差的绝对值均不大于 ,则我们称这棵树为一棵 AVL 树。

若左(或右)子树不存在,则我们视其高度为 。

现在请你对于指定的一棵二叉树,找出它最大(即节点最多)的一棵满足 AVL 树性质的子树的大小。

输入格式

第一行一个正整数 (),表示这棵二叉树有 个节点,从 到 进行编号。

第二行 个正整数,用一个空格隔开,第 个数 () 表示编号为 的节点的权值。

接下来 行,每行三个整数 (), (, ), (),用一个空格隔开,表示编号为 的节点是编号为 的节点的子节点。若 则它是左儿子,否则为右儿子。

输入数据保证这是一棵合法的二叉树。

输出格式

一行一个正整数 ,表示给定二叉树最大的 AVL 子树的大小。

样例

样例输入

6
7 6 5 7 3 8
2 4 1
1 6 1
3 5 0
1 2 0
3 1 1

样例输出

4