110. 平衡二叉树
class Solution {
public:
int depth(TreeNode* root)
{
if(root==nullptr) return 0;
int left=depth(root->left);
if(left==-1) return -1;
int right=depth(root->right);
if(right==-1) return -1;
if(abs(right-left)>1) return -1;
else return max(left,right)+1;
}
bool isBalanced(TreeNode* root) {
int result=depth(root);
if(result==-1) return false;
else return true;
}
};
257. 二叉树的所有路径
class Solution {
public:
void path(TreeNode* root,vector<string>& res,vector<int>&p)
{
if(root==nullptr)
{
return;
}
p.push_back(root->val);
if(root->left==nullptr&&root->right==nullptr)
{
string str;
for(int i=0;i<p.size()-1;i++)
{
str+=to_string(p[i]);
str+="->";
}
str+=to_string(p[p.size()-1]);
res.push_back(str);
return;
}
if(root->left)
{
path(root->left,res,p);
p.pop_back();
}
if(root->right)
{
path(root->right,res,p);
p.pop_back();
}
}
vector<string> binaryTreePaths(TreeNode* root) {
vector<string> res;
vector<int> p;
path(root,res,p);
return res;
}
};
404. 左叶子之和
class Solution {
public:
void leftsum(TreeNode* &root,int& sum)
{
if(root==nullptr) return;
if(root->left&&root->left->left==nullptr&&root->left->right==nullptr) sum+=root->left->val;
leftsum(root->left,sum);
leftsum(root->right,sum);
}
int sumOfLeftLeaves(TreeNode* root) {
int sum=0;
leftsum(root,sum);
return sum;
}
};
需要重新做的题目
110. 平衡二叉树
257. 二叉树的所有路径