leetcode链接:平衡二叉树
思路:
计算当前根节点的左右子树的深度,若左树和右树的高度相减的绝对值大于 1 1 1,则返回 false
。如果当前根节点满足则继续向下递归。本题涉及到求二叉树的高度(若不太理解,可以看我往期文章 ✨链接:【数据结构】详解二叉树(2))。
1️⃣ 代码:
// 计算当前根节点最大深度
int maxDepth(struct TreeNode* root){
if (root == NULL) {
return 0;
}
int leftDepth = maxDepth(root->left);
int rightDepth = maxDepth(root->right);
return leftDepth > rightDepth ? leftDepth + 1 : rightDepth + 1;
}
bool isBalanced(struct TreeNode* root){
if (root == NULL)
return true;
int leftTreeDepth = maxDepth(root->left);
int rightTreeDepth = maxDepth(root->right);
if (abs(leftTreeDepth - rightTreeDepth) > 1) {
return false;
}
return isBalanced(root->left) && isBalanced(root->right);
}