有一棵树,判断是否为平衡二叉树。平衡二叉树即为:左右子树的高度差不超过1
代码:
/// <summary>
/// 若root为平衡二叉树,则返回二叉树的高度,否则返回-1
/// </summary>
/// <param name="root"></param>
/// <returns></returns>
public static int BalanceHeight(TreeNode root)
{
if (root == null) return 0;
int left = BalanceHeight(root.Left);
int right = BalanceHeight(root.Right);
if (left < 0 || right < 0 || Math.Abs(left - right) > 1) return -1;
return Math.Max(left, right) + 1;
}