首页 > 编程语言 >代码随想录算法训练营Day18 | Leetcode 530 二叉搜索树的最小绝对差 Leetcode 236 二叉树的最近公共祖先

代码随想录算法训练营Day18 | Leetcode 530 二叉搜索树的最小绝对差 Leetcode 236 二叉树的最近公共祖先

时间:2024-08-03 16:59:10浏览次数:17  
标签:right TreeNode 随想录 二叉树 return NULL root Leetcode left

前言

今天有一道题目没写,二叉搜索树中的众数,有点太难理解了,先放一放。

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

相关文章

  • 代码随想录day32 || 509斐波那契数列 70爬楼梯 746使用最小花费爬楼梯
    509斐波那契数列力扣题目链接题目描述:斐波那契数 (通常用 F(n) 表示)形成的序列称为 斐波那契数列 。该数列由 0 和 1 开始,后面的每一项数字都是前面两项数字的和。也就是:F(0)=0,F(1) =1F(n)=F(n-1)+F(n-2),其中n>1给定 n ,请计算 F(n) 。代码1......
  • 代码随想录day31|| 56合并区间 738 递增数字
    56合并区间 力扣题目链接题目描述:以数组 intervals 表示若干个区间的集合,其中单个区间为 intervals[i]=[starti,endi] 。请你合并所有重叠的区间,并返回 一个不重叠的区间数组,该数组需恰好覆盖输入中的所有区间 。示例1:输入:intervals=[[1,3],[2,6],[8,10],[1......
  • LeetCode面试150——238除自身以外数组的乘积
    题目难度:中等默认优化目标:最小化平均时间复杂度。Python默认为Python3。目录1题目描述2题目解析3算法原理及代码实现3.1左右乘积列表参考文献1题目描述给你一个整数数组nums,返回数组answer,其中answer[i]等于nums中除nums[i]之外其余各元素的乘积......
  • leetcode数论(2523. 范围内最接近的两个质数)
     前言经过前期的基础训练以及部分实战练习,粗略掌握了各种题型的解题思路。现阶段开始专项练习。描述给你两个正整数 left 和 right ,请你找到两个整数 num1 和 num2 ,它们满足:left<=nums1<nums2<=right  。nums1 和 nums2 都是 质数 。nums2-nums1......
  • LeetCode | 单链表操作
    LeetCode203移除链表元素LeetCode707设计链表LeetCode206反转链表主类ListNodepackagecom.github.dolphinmind.linkedlist.uitls;/***@authordolphinmind*@ClassNameListNode*@description*@date2024/8/3*///链表组成元素:节点publicclass......
  • 【代码随想录】图论复习(Python版)
    深度优先搜索1.搜索过程一个方向搜,不到黄河不回头,直到遇到绝境了,搜不下去了,再换方向(换方向的过程就涉及到了回溯)2.代码框架回溯法的代码框架:defbacktracking(参数):if终止条件:存放结果returnfor选择本层集合中的元素(树中节点孩子的数量......
  • 【代码随想录】数组篇
    一、二分查找给定一个 n 个元素有序的(升序)整型数组 nums 和一个目标值 target  ,写一个函数搜索 nums 中的 target,如果目标值存在返回下标,否则返回 -1。二分查找的前提有序数组,无重复元素二分法的写法1.左闭右闭,即[left,right]而(左<=右)如果nums[mid]>......
  • Day18 二叉树Part6
    目录任务530.二叉搜索树的最小绝对差思路501.二叉搜索树中的众数思路236.二叉树的最近公共祖先思路心得体会任务530.二叉搜索树的最小绝对差给你一个二叉搜索树的根节点root,返回树中任意两不同节点值之间的最小差值。差值是一个正数,其数值等于两值之差的绝对值。思路......
  • 先(后)序遍历确定唯一二叉树
    在二叉树的先序遍历或后序遍历序列中,如果我们记录了空节点的位置(通常用特殊符号如'#'表示),就足以唯一确定一棵二叉树的结构。这种方法的关键在于,记录空节点的位置能够帮助我们在遍历序列中准确地还原出树中节点的结构信息。因此,只要给出了先序遍历或后序遍历序列以及空节点的位置,......
  • 数据结构--------二叉树的定义及遍历操作的实现
    /*二叉树的链式存储以及基本操作*/#include<stdio.h>#include<stdlib.h>//树的节点typedefstructBTNode{intdata;structBTNode*lchild;structBTNode*rchild;}BTNode,*BTTree;/......