typedef char DataType;
typedef struct TNode
{
DataType value;
struct TNode* leftchild;
struct TNode* rightchild;
}TreeNode;
//求解树的高度
int TreeDepth(TreeNode* tree)
{
if(tree==NULL)
{
return 0;
}
int leftDepth = tree->leftchild;
int righDepth = tree->rightchild;
return (leftDepth>rightchild)?(leftDepth+1):(rightchild+1);
}
//判断一棵树是否为平衡二叉树
bool IsBalanced(TreeNode* tree)
{
if(tree==NULL)
{
return true;
}
int leftDepth = TreeDepth(tree->leftchild);
int rightDepth = TreeDepth(tree->rightchild);
int diff = leftDepth - rightDepth;
if(diff>1 || diff < -1)
{
return false;
}
return (IsBalanced(tree->leftchild)
&& IsBalanced(tree->rightchild));
}