110. 平衡二叉树
class Solution {
public:
int getdepth(TreeNode* node)
{
if(node==nullptr)
{
return 0;
}
int leftdepth = getdepth(node->left);
if (leftdepth == -1) return -1;
int rightdepth = getdepth(node->right);
if (rightdepth == -1) return -1;
int result;
if(abs(rightdepth - leftdepth)>1) result=-1;
else result = 1+max(rightdepth,leftdepth);
return result;
}
bool isBalanced(TreeNode* root) {
return getdepth(root)==-1?false:true;
}
};
257. 二叉树的所有路径
class Solution {
public:
void traversal(TreeNode* node, vector<int>&path,vector<string>&result)
{
path.push_back(node->val);
if(node->left == nullptr&&node->right == nullptr)
{
string sPath;
for(int i=0;i<path.size()-1;i++)
{
sPath += to_string(path[i]);
sPath += "->";
}
sPath += to_string(path[path.size() - 1]);
result.push_back(sPath);
return;
}
if(node->left)
{
traversal(node->left,path,result);
path.pop_back();
}
if(node->right)
{
traversal(node->right,path,result);
path.pop_back();
}
}
vector<string> binaryTreePaths(TreeNode* root) {
vector<int> path;
vector<string> result;
traversal(root,path,result);
return result;
}
};
404. 左叶子之和
class Solution {
public:
int sumOfLeftLeaves(TreeNode* root) {
if(root == nullptr) return 0;
if(root->left==nullptr&&root->right==nullptr) return 0;
int leftnum = sumOfLeftLeaves(root->left);
if(root->left!=nullptr && root->left->left ==nullptr &&root->left->right == nullptr)
{
leftnum=root->left->val;
}
int rightnum=sumOfLeftLeaves(root->right);
int sum=leftnum+rightnum;
return sum;
}
};