/**
* Definition for binary tree
* struct TreeNode {
* int val;
* TreeNode *left;
* TreeNode *right;
* TreeNode(int x) : val(x), left(NULL), right(NULL) {}
* };
*/
class Solution {
public:
bool check(TreeNode *curNode,int &dep)
{
if(curNode==NULL)
{
dep=0;
return true;//没有左右子树时,平衡
}
int lefDep=0,rigDep=0;
bool lefBal=check(curNode->left,lefDep);//因为参数为int &dep,所以递归时,底层会修改lefDep
bool rigBal=check(curNode->right,rigDep);
dep=lefDep>rigDep?lefDep+1:rigDep+1;//用子树的深度修改当前节点的深度
return lefBal&&rigBal&&(abs(lefDep-rigDep)<=1);//左子树深度与右子树深度相差<=1时,平衡
}
bool isBalanced(TreeNode *root) {
// Note: The Solution object is instantiated only once and is reused by each test case.
int dep=0;
return check(root,dep);
}
};
【leetcode】Balanced Binary Tree
最新推荐文章于 2017-06-28 16:04:50 发布