前言
今天有一道题目没写,二叉搜索树中的众数,有点太难理解了,先放一放。
Leetcode 530 二叉搜索树的最小绝对差
题目链接:530. 二叉搜索树的最小绝对差 - 力扣(LeetCode)
代码随想录题解:代码随想录 (programmercarl.com)
思路:二叉搜索树的性质是中序遍历为升序的,所以我们想找最小绝对差只需要找当前节点和前一个节点的差就行了。
代码:
class Solution {
public:
int result = INT_MAX;
TreeNode* pre = NULL;
void fun(TreeNode* root)
{
if(root==NULL)
{
return;
}
fun(root->left);//左
if(pre!=NULL)//中
{
result=min(result,root->val-pre->val);
}
pre=root;//记录前一个结点
fun(root->right);//右
}
int getMinimumDifference(TreeNode* root) {
fun(root);
return result;
}
};
Leetcode 236 二叉树的最近公共祖先
题目链接:236. 二叉树的最近公共祖先 - 力扣(LeetCode)
代码随想录题解:代码随想录 (programmercarl.com)
思路:终止条件是为空或者找到了,就返回当前节点。如果某个节点的左子树和右子树都返回的不为空,那么证明这个节点就是要找的公共节点。
代码:
class Solution {
public:
TreeNode* lowestCommonAncestor(TreeNode* root, TreeNode* p, TreeNode* q) {
if(root==NULL||root==p||root==q)终止条件
{
return root;
}
TreeNode* left=lowestCommonAncestor(root->left,p,q);//左
TreeNode* right=lowestCommonAncestor(root->right, p, q);//右
if(left!=NULL&&right!=NULL)
{
return root;
}
if(left==NULL&&right==NULL)
{
return NULL;
}
if(left==NULL&&right!=NULL)
{
return right;
}
if(left!=NULL&&right==NULL)
{
return left;
}
return NULL;
}
};
总结
数据库和计网也在稳步进行中
标签:right,TreeNode,随想录,二叉树,return,NULL,root,Leetcode,left From: https://blog.csdn.net/m0_74853141/article/details/140892925