LeetCode 面试题04.04. 检查平衡性

题目链接: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;

    }
};
原文地址:https://www.cnblogs.com/zzw-/p/13300599.html