leetcode 110. Balanced Binary Tree

来源:互联网 发布:java必读的5本书 编辑:程序博客网 时间:2024/06/06 02:52

原题:检测一个二叉树是不是平衡二叉树

代码如下:

bool isBalanced(struct TreeNode* root) {    void setdepth(struct TreeNode*);    if(root==NULL)        return true;    setdepth(root);    if(root->left!=NULL&&root->right!=NULL)    {        if(abs(root->left->val-root->right->val)>1)            return false;        return isBalanced(root->left)&&isBalanced(root->right);    }    else if(root->left!=NULL)    {        if(root->left->val>1)            return false;        return isBalanced(root->left);    }    else if(root->right!=NULL)    {        if(root->right->val>1)            return false;        return isBalanced(root->right);    }    else    {        return true;    }    return true;}void setdepth(struct TreeNode* root){    int max(int,int);    if(root->left!=NULL&&root->right!=NULL)    {        setdepth(root->left);        setdepth(root->right);        root->val=max(root->left->val,root->right->val)+1;    }    else if(root->left!=NULL)    {        setdepth(root->left);        root->val=root->left->val+1;    }    else if(root->right!=NULL)    {        setdepth(root->right);        root->val=root->right->val+1;    }    else    {        root->val=1;    }}int max(int a,int b){    if(a>b)        return a;    return b;}
就这道题目来说,其实这个方法还挺好的,但是就数值来说,这个可能就需要改一下类,否则就要把这个val的值覆盖了,或者需要一些辅助的测量工具。

上面代码的思路,运用两次递归,第一次算深度,第二次做比较。

原创粉丝点击