题目链接:https://leetcode-cn.com/problems/check-balance-lcci/
题目思路:进行枚举,判断每个节点的平衡性,如果有一个节点不平衡返回false。这里记录一下,c++中max的效率要大于手写使用if判断的效率,因为自己开始使用if在最后一个案例上超时了,后来参考评论区
代码使用max成功通过。具体通过LeetCode代码如下:
/** * 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 isBalanced(TreeNode* root) {if(!root){ return true; } if(abs(findDepth(root->left)-findDepth(root->right))>1){ return false; } return isBalanced(root->left)&&isBalanced(root->right); } int findDepth(TreeNode* root){ if(!root){ return 0; } //if(findDepth(root->left)>findDepth(root->right)){ // return findDepth(root->left)+1; //} return max(findDepth(root->right),findDepth(root->left))+1; } };