LeetCode | 110. 平衡二叉树
- 首先计算出二叉树的高度
- 然后计算当前节点的左右子树的高度,然后判断当前节点的左右子树高度差是否超过 1,最后递归地检查左右子树是否也是平衡的。
//计算二叉树的高度 int height(struct TreeNode* root) { if(root == NULL) return NULL; int left = height(root->left); int right = height(root->right); return left > right ? left + 1 : right + 1; } //判断是否是平衡二叉树 bool isBalanced(struct TreeNode* root) { if(root == NULL) return true; //分别求左右子树的高度 int left = height(root->left); int right = height(root->right); //判断当前节点是否平衡 if(abs(left - right) > 1) return false; //递归检查左右子树是否平衡 return isBalanced(root->left) && isBalanced(root->right); }