需求:输入一棵二叉树的根结点,判断该树是不是平衡二叉树。如果某二叉树中任意结点的左右子树的深度相差不超过1,那么它就是一棵平衡二叉树。
分析:
/*
* 思路:递归思想,左右子树的深度差不能大于1;*
*
* 细节:根节点如果为空,是否属于异常还是平衡二叉树
* 左右节点的差应该是绝对值
* */
代码实现:
bool is_balanced_binary_tree(t_binarytree_node *p_root)
{
if (p_root == NULL)
return true;
int left = depth_of_binary_tree(p_root->left);
int right = depth_of_binary_tree(p_root->right);
if ((left - right > 1) || (right - left > 1))
return false;
return is_balanced_binary_tree(p_root->left) && is_balanced_binary_tree(p_root->right);
}
总结:
知识迁移:将计算二叉树深度的算法应用在此场景
递归思想
参考文献:
http://zhedahht.blog.163.com/blog/static/25411174200732975328975/