判断是否为平衡二叉树
判断是否为平衡二叉树
1、根据基础的树深度函数判断两个子树的深度差值小于2
2、采用递归思想,对左孩子、有孩子判断是否是平衡二叉树
class Solution {
public:
int node_depth(TreeNode* node) {
if (node == NULL)
{
return 0;
}
int left_depth = node_depth(node->left);
int right_depth = node_depth(node->right);
return max(left_depth, right_depth) + 1;
}
bool isBalanced(TreeNode* root) {
if (root == NULL)
{
return true;
}
int left_depth = node_depth(root->left);
int right_depth = node_depth(root->right);
if (abs(left_depth - right_depth) > 1)
{
return false;
}
return isBalanced(root->left) && isBalanced(root->right);
}
};