/**
* 题目:输入一棵二叉树的根结点,判断该树是不是平衡二叉树。如果某二叉树
* 中任意结点的左右子树的深度相差不超过1,那么它就是一棵平衡二叉树
*/
int is_balanced(struct node * root_node, int * depth)
{
if(root_node == NULL)
{
*depth = 0;
return 1;
}
int left, right;
if(is_balanced(root_node->left_node, &left) && \
is_balanced(root_node->right_node, &right))
{
int diff = left - right;
if(diff <= 1 && diff >= -1)
{
*depth = (left > right ? left : right) + 1;
return 1;
}
}
return 0;
}