代码随想录算法训练营第20天|530.二叉搜索树的最小绝对差 |501.二叉搜索树中的众数 | 236. 二叉树的最近公共祖先

本文介绍了在二叉搜索树中利用双指针技巧解决的三个问题:最小绝对差的计算、众数查找以及最近公共祖先的寻找。通过递归和中序遍历,结合双指针策略,优化了解决这些问题的算法效率。
摘要由CSDN通过智能技术生成

530.二叉搜索树的最小绝对差 

背景:需要领悟一下二叉树遍历上双指针操作,优先掌握递归 

题目链接/文章讲解:代码随想录

视频讲解:二叉搜索树中,需要掌握如何双指针遍历!| LeetCode:530.二叉搜索树的最小绝对差_哔哩哔哩_bilibili

算法思想:暴力解法,通过中序遍历,转变成有序数组做。

                 更优解法 双指针:设两个指针,cur和pre, 指向当前节点和前一个节点,用cur-pre,结果用result数组保存(result初始值设为int型最大值,因为求最小值),之后result不断和cur-pre比较,如果小的话,result更新替换为更小的那一个,如此递归,直到结束,选出最小值。

应用条件:二叉树求最小值

501.二叉搜索树中的众数 

背景:和 530差不多双指针思路,不过 这里涉及到一个很巧妙的代码技巧。可以先自己做做看,然后看我的视频讲解。

代码随想录题目链接/文章讲解:代码随想录

视频讲解:不仅双指针,还有代码技巧可以惊艳到你! | LeetCode:501.二叉搜索树中的众数_哔哩哔哩_bilibili

算法思想:

              普通解法:先遍历一遍二叉树(前/中/后续,都行)用map统计每个元素出现的频率,对这些频率排序,方法是把map转换为vector数组,然后找众数

              双指针解法:用中序遍历(因为只有用中序遍历,得到的序列才是有序的),设两个指针,cur和pre, 指向当前节点和前一个节点,用Maxcout存最高频率,用count统计单个元素出现的最高频率,(当cur==pre,则count++,其他情况count==1)。result数组放最终的结果,即最高频率。

应用场景:只要是求二叉搜索树的众数,必用中序遍历

236. 二叉树的最近公共祖先 

背景:本题其实是比较难的,可以先看我的视频讲解 

代码随想录题目链接/文章讲解:代码随想录

视频讲解:自底向上查找,有点难度! | LeetCode:236. 二叉树的最近公共祖先_哔哩哔哩_bilibili

思路关键词:后序遍历(目的是从下往上遍历,找公共祖先)

                      使用方法:回溯(有递归就有回溯) ,左子树只要出现P或Q就往上返回,右子树同理

应用场景:自下往上的处理场景可以用回溯

  • 5
    点赞
  • 3
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值