题目描述
blablabla
样例
blablabla
算法
(递归)
- 思想跟上道题很像,不过值得注意的是dfs()的返回类型是int型的,ans是在dfs()中被更新的,ans的初值是true,如果不对了改成false。
- 先dfs再return。
- 通过left和right把左右子树的高度求出来,然后比较,剩下的一样的。
时间复杂度
$O(n)$
C++ 代码
/**
* Definition for a binary tree node.
* struct TreeNode {
* int val;
* TreeNode *left;
* TreeNode *right;
* TreeNode(int x) : val(x), left(NULL), right(NULL) {}
* };
*/
class Solution {
public:
bool ans = true;
bool isBalanced(TreeNode* root) {
dfs(root);
return ans;
}
int dfs(TreeNode *root)
{
if(!root) return 0;
int left = dfs(root->left);
int right = dfs(root->right);
if(abs(left - right) > 1) ans = false;
return max(left, right) + 1;
}
};