在计算机科学中,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