LeetCode: Balanced Binary Tree

来源:互联网 发布:出差日历行程软件 编辑:程序博客网 时间:2024/06/02 19:01

思路:就是查看左右子树的高度是差是否超过1,由于求树的高度也是一个递归过程,所以可以将高度值作为一个中间结果作为判断,高度为-1,表示不是平衡二叉树。

code:

class Solution {public:    int solve(TreeNode *root){        if(root == NULL)            return 0;        if(root->left == NULL && root->right == NULL)            return 1;        int leftHeigh = solve(root->left);        if(leftHeigh < 0)            return -1;        int rightHeigh = solve(root->right);        if(rightHeigh < 0)            return -1;        if(abs(leftHeigh - rightHeigh) > 1)            return -1;        return max(leftHeigh,rightHeigh) + 1;    }    bool isBalanced(TreeNode *root) {        int ret = solve(root);        return ret == -1 ? false : true;    }};


0 0