【LeetCode】Balanced Binary Tree

来源:互联网 发布:live聊天软件 编辑:程序博客网 时间:2024/05/08 13:54

Given a binary tree, determine if it is height-balanced.

For this problem, a height-balanced binary tree is defined as a binary tree in which the depth of the two subtrees of every node never differ by more than 1.

思路:见代码。

/** * Definition for binary tree * struct TreeNode { *     int val; *     TreeNode *left; *     TreeNode *right; *     TreeNode(int x) : val(x), left(NULL), right(NULL) {} * }; */struct Treebalance{    int val;    bool isbalc;};class Solution {public:    Treebalance Balanced(TreeNode *root){        Treebalance ret;        ret.val=0;        ret.isbalc=true;        if(root==NULL)return ret;        if(root->left==NULL&&root->right==NULL){            ret.val=1;            return ret;        }else if(root->left==NULL){            ret=Balanced(root->right);            if(ret.val==1&&ret.isbalc==true){                ret.val=2;                return ret;            }            else{                ret.isbalc=false;                return ret;            }        }else if(root->right==NULL){            ret=Balanced(root->left);            if(ret.val==1&&ret.isbalc==true){                ret.val=2;                return ret;            }            else{                ret.isbalc=false;                return ret;            }        }else{            ret=Balanced(root->left);            Treebalance ret1;            ret1=Balanced(root->right);            if(ret.isbalc&&ret1.isbalc){                if(((ret.val-ret1.val)>=-1)&&((ret.val-ret1.val)<=1)){                    ret.val=1+(ret.val>ret1.val?ret.val:ret1.val);                    return ret;                }else{                    ret.isbalc=false;                    return ret;                }            }else{                ret.isbalc=false;                return ret;            }        }    }    bool isBalanced(TreeNode *root) {        if(root==NULL)return true;        Treebalance ret;        ret=Balanced(root);        return ret.isbalc;    }};

0 0
原创粉丝点击