问题 M: 平衡二叉树

内存限制:128 MB 时间限制:1 S
题面:传统 评测方式:文本比较 上传者:
提交:44 通过:7

题目描述

在计算机科学中,AVL树是最先发明的自平衡二叉查找树。
在AVL树中任何节点的两个子树的高度最大差别为一,所以它也被称为高度平衡树。
查找、插入和删除在平均和最坏情况下都是O(log n)。
增加和删除可能需要通过一次或多次树旋转来重新平衡这个树。
AVL树得名于它的发明者 G.M. Adelson-Velsky 和 E.M. Landis,他们在 1962 年的论文 "An algorithm for the organization of information" 中发表了它。
现在我们想要知道一棵树是不是传说中的AVL树,但是我们都不知道什么是AVL树,只能请求于你了。

输入格式

多组测试数据。
第一行一个n,表示这个树有n个节点。(0<n<=1000)
接下来一行有n个整数,a[1],a[2]...,a[n](0<=a[i]<=n)
如果a[i]不为0,表示编号为i的节点的父亲节点为a[i];
如果a[i]为0,表示i是根节点,输入数据保证是一棵树(一棵树!)。

输出格式

对于每组数据,如果是AVL树,输出YES,否则输出NO。

输入样例 复制

5
0 1 2 3 4
5
0 1 1 2 2

输出样例 复制

NO
YES