110 平衡二叉树
class Solution {
public:
bool isBalanced(TreeNode* root)
{
if(root==NULL) return true;
if(abs(maxnum(root->right)-maxnum(root->left))>1)
return false;
return isBalanced(root->left)&&isBalanced(root->right);
}
int maxnum(TreeNode* root)
{
if(root==NULL) return 0;
int l=maxnum(root->left);
int r=maxnum(root->right);
return 1+max(l,r);
}
};
257 二叉树的所有路径
问题有很多种写法 可以递归的过程传递path+“->”
void traversal(TreeNode* root,vector<int>&path,vector<string>&res)
{
path.push_back(root->val);
if(root->right==NULL&&root->left==NULL)
{
string sPath="";
sPath+= to_string(path[0]);
for(int i=1;i<path.size();i++)
{
sPath+="->";
sPath+=to_string(path[i]);
}
res.push_back(sPath);
return;
}
if (root->left)
{
traversal(root->left, path, res);
path.pop_back();
}
if (root->right)
{
traversal(root->right, path, res);
path.pop_back();
}
}
vector<string> binaryTreePaths(TreeNode* root)
{
vector<string>res;
vector<int>path;
if(root==NULL) return res;
traversal(root, path, res);
return res;
}
};
404左子树之和
class Solution {
public:
int sumOfLeftLeaves(TreeNode* root)
{
if(root==NULL)return 0;
if (root->left == NULL && root->right== NULL) return 0;
int leftValue = sumOfLeftLeaves(root->left);
if (root->left && !root->left->left && !root->left->right)
{
leftValue = root->left->val;
}
int rightValue = sumOfLeftLeaves(root->right);
int sum = leftValue+rightValue;
return sum;
}
};