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