AVL的定义
平衡二叉查找树:简称平衡二叉树。由前苏联的数学家Adelse-Velskil和Landis在1962年提出的高度平衡的二叉树,根据科学家的英文名也称为AVL树。它具有如下几个性质:
可以是空树。
假如不是空树,任何一个结点的左子树与右子树都是平衡二叉树,并且高度之差的绝对值不超过1
平衡之意,如天平,即两边的分量大约相同。如定义,假如一棵树的左右子树的高度之差超过1,如左子树的树高为2,右子树的树高为0,子树树高差的绝对值为2就打破了这个平衡。如依次插入1,2,3三个结点(如下图)后,根结点的右子树树高减去左子树树高为2,树就失去了平衡。
class Solution {
public:
int tree_deep(TreeNode* pRoot)
{
if(pRoot == NULL)
{
return 0;
}
int left = tree_deep(pRoot->left);
int right = tree_deep(pRoot->right);
return left > right?(left+1):(right+1);
}
bool IsBalanced_Solution(TreeNode* pRoot) {
if(pRoot == NULL)
{
return true;
}
int leftr = tree_deep(pRoot->left);
int rightr = tree_deep(pRoot->right);
int diff =abs(leftr - rightr);
if(diff > 1)
{
return false;
}
else
{
return true;
}
}
};