面试题 04.04. 检查平衡性

题目来源:

        leetcode题目,网址:面试题 04.04. 检查平衡性 - 力扣(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) {
        return assist(root)!=-1;
    }
    int assist(TreeNode* root){
        if(root==nullptr){
            return 0;
        }
        int left=assist(root->left);
        if(left==-1){
            return -1;
        }
        int right=assist(root->right);
        if(right==-1){
            return -1;
        }
        if(abs(left-right)>1){
            return -1;
        }
        return max(left,right)+1;
    }
};
 
  

总结:

        官方题解给出了自顶向下的递归和自底向上的递归两种解法。


你可能感兴趣的:(#,C++,LeetCode,C++)