国产探花免费观看_亚洲丰满少妇自慰呻吟_97日韩有码在线_资源在线日韩欧美_一区二区精品毛片,辰东完美世界有声小说,欢乐颂第一季,yy玄幻小说排行榜完本

首頁 > 學院 > 開發設計 > 正文

Balanced Binary Tree

2019-11-06 06:07:58
字體:
來源:轉載
供稿:網友

這個麻煩在,對以一個結點為根的樹,左右樹都Balance,左右樹的差小于1同時滿足才行。第一種,每一個算Balance都要算到下面的height,然后復雜度O(N^2)

/** * 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) {         if(root==NULL) return true;         if(root->left==NULL)         {             if(height(root->right)>0)                return false;                            return true;                       }                  if(root->right==NULL)         {             if(height(root->left)>0)                return false;                             return true;                    }                           if(isBalanced(root->left)&&isBalanced(root->right)&&(abs(height(root->left)-height(root->right))<=1))         {             return true;         }                          return false;    }        int height(TreeNode * root)    {        if(root==NULL)            return -1;                 int a=height(root->left);        int b=height(root->right);        return (a>b)?(a+1):(b+1);    }        };

第二種,基于DFS,這種用一個-1做標識,最后不是-1的就是banlance,過程中只要有不平衡就會標記-1。這樣復雜度是O(n)

/** * 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 dfsHeight(root)!=-1;    }            int dfsHeight(TreeNode * root)    {        if(root==NULL) return 0;                int leftHeight=dfsHeight(root->left);        if(leftHeight==-1) return -1;        int rightHeight=dfsHeight(root->right);        if(rightHeight==-1) return -1;                if(abs(leftHeight-rightHeight)>1)        return -1;        return max(leftHeight,rightHeight)+1;    }};

 


發表評論 共有條評論
用戶名: 密碼:
驗證碼: 匿名發表
主站蜘蛛池模板: 灌阳县| 明光市| 广安市| 会昌县| 比如县| 黑龙江省| 姚安县| 乌兰浩特市| 嘉义县| 保定市| 克东县| 牙克石市| 丹江口市| 彭泽县| 共和县| 吐鲁番市| 玛沁县| 左云县| 壤塘县| 调兵山市| 顺义区| 临高县| 罗城| 浑源县| 色达县| 高雄县| 行唐县| 瑞昌市| 漳州市| 扶余县| 余江县| 磐安县| 宁陵县| 通榆县| 阜新| 苍溪县| 千阳县| 根河市| 枞阳县| 翁源县| 卫辉市|