平衡二叉树:每个结点的左右子树的高度最多差1
编程思路:
(1)编写功能子函数用于判断某个结点的深度
(2)比较父亲结点两个子结点的深度差
struct TreeNode {
int val;
struct TreeNode *left;
struct TreeNode *right;
};
int depth(struct TreeNode* root)
{
if (root == NULL)
return 0;
else
{
int depthRight = depth(root->right);
int depthLeft = depth(root->left);
return 1+(depthRight>depthLeft?depthRight:depthLeft);
}
}
bool isBalanced(struct TreeNode* root) {
if (root == NULL)
return true;
int depthRight = depth(root->right);
int depthLeft = depth(root->left);
if (abs(depthRight-depthLeft) > 1)
return false;
else
return isBalanced(root->left) && isBalanced(root->right);
}