(1) Balanced Binary Tree
class Solution {
private:
bool check(TreeNode *root, int &dep){
if(!root)
{
dep=0;
return true;
}
int leftdep,rightdep;
bool leftBalanced=check(root->left, leftdep);
bool rightBalanced=check(root->right, rightdep);
dep=1+max(leftdep, rightdep);
return leftBalanced && rightBalanced && (abs(leftdep-rightdep)<=1);
}
public:
bool isBalanced(TreeNode *root) {
int dep;
return check(root,dep);
}
};
(2) Pascal's Triangle
class Solution {
public:
vector<vector<int> > generate(int numRows) {
vector<vector<int>> ret(numRows);
if(numRows==0)
return ret;
if(numRows==1)
ret[0].push_back(1);
else
{
ret[0].push_back(1);
for(int i=1;i<numRows;i++)
{
ret[i].push_back(1);
if(numRows>2)
for(int j=1;j<i;j++)
ret[i].push_back(ret[i-1][j-1]+ret[i-1][j]);
ret[i].push_back(1);
}
}
return ret;
}
};
(3) Pascal's Triangle II
class Solution {
public:
vector<int> getRow(int rowIndex) {
int numRows=rowIndex+1;
vector<int> ret(numRows);
if(numRows==1)
ret[0]=1;
else
{
ret[0]=1;
for(int i=1;i<numRows;i++)
{
ret[0]=1;
if(numRows>2)
for(int j=i-1;j>=1;j--)
ret[j]=ret[j-1]+ret[j];
ret[i]=1;
}
}
return ret;
}
};