-
今日学习的文章链接,或者视频链接
-
自己看到题目的第一想法
-
看完代码随想录之后的想法
530:
class Solution {
public:
TreeNode* pre = nullptr;
int result = INT_MAX;
void traverse(TreeNode* root){
if (!root) return;
traverse(root->left);
if (pre == nullptr){
pre = root;
traverse(root->right);
return;
}
if(abs(root->val-pre->val)<result){
result = abs(root->val-pre->val);
}
pre = root;
traverse(root->right);
}
int getMinimumDifference(TreeNode* root) {
traverse(root);
return result;
}
};
501:
class Solution {
public:
vector<int> result;
TreeNode* prev;
int maxCount = 0; // 最大频率
int count = 0; // 统计频率
void traverse(TreeNode* cur){
if (!cur) return;
traverse(cur->left);
if(prev==nullptr){
count=1;
}
else if(cur->val == prev->val){
count+=1;
}else{
count = 1;
}
if(count==maxCount){
result.push_back(cur->val);
}
if(count>maxCount){
maxCount = count;
result.clear();
result.push_back(cur->val);
}
prev = cur;
traverse(cur->right);
}
vector<int> findMode(TreeNode* root) {
traverse(root);
return result;
}
};
236:
class Solution {
public:
TreeNode* lowestCommonAncestor(TreeNode* root, TreeNode* p, TreeNode* q) {
//base case
if (!root) return NULL;
if(root == q || root == p) return root;
//post-order
TreeNode* left = lowestCommonAncestor(root->left,p,q);
TreeNode* right = lowestCommonAncestor(root->right,p,q);
if(!left && !right){
return NULL;
}else if (left && right){
return root;
}else{
return left == NULL?right:left;
}
}
};
-
自己实现过程中遇到哪些困难
-
今日收获,记录一下自己的学习时长