110. Balanced Binary Tree [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 nextLevel(root, 0) >= 0;
    }
    
    int nextLevel(TreeNode* root, int level) {
        if (!root) return level;
        int ld = nextLevel(root->left, level + 1);
        if (ld < 0) return -1;
        int rd = nextLevel(root->right, level + 1);
        if (rd < 0) return -1;
        if (abs(ld - rd) > 1) return -1;
        return ld > rd ? ld : rd;
    }
    
    
};


發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章