代码随想录第十七天|Leetcode110.平衡二叉树、Leetcode257. 二叉树的所有路径、Leetcode404.左叶子之和
Leetcode110.平衡二叉树
二叉树还是简单啊,一遍过了直接
class Solution {
public:
int maxDepth(TreeNode* root){
if(root==NULL) return 0;
return max(maxDepth(root->left),maxDepth(root->right))+1;
}
bool isBalanced(TreeNode* root) {
if(root==NULL) return true;
bool balance=(abs(maxDepth(root->left)-maxDepth(root->right))<=1);
return isBalanced(root->left)&&isBalanced(root->right)&&balance;
}
};
Leetcode257. 二叉树的所有路径
官方答案感觉比随想录给的好一点
temp是临时变量,执行完treverse自动就释放了,不用整个判断手动释放的。
class Solution {
public:
void treverse(TreeNode* root,vector<string> &result,string temp){
if(root!=NULL){
temp+=to_string(root->val);
if(root->left==NULL&&root->right==NULL) result.push_back(temp);
else{
temp+="->";
treverse(root->left,result,temp);
treverse(root->right,result,temp);
}
}
}
vector<string> binaryTreePaths(TreeNode* root) {
string temp;
vector<string> result;
treverse(root,result,temp);
return result;
}
};
Leetcode404.左叶子之和
已经差不多会用了
class Solution {
public:
void treverse(TreeNode* cur,int &result){
if(cur!=NULL){
if(cur->left!=NULL&&cur->left->left==NULL&&cur->left->right==NULL) result+=cur->left->val;
else if(cur->left!=NULL) treverse(cur->left,result);
if(cur->right) treverse(cur->right,result);
}
}
int sumOfLeftLeaves(TreeNode* root) {
int result=0;
treverse(root,result);
return result;
}
};