dfs专题5——(二叉搜索树中第 K 小的元素)

🔥近津薪荼: 个人主页 🎬个人专栏: 《近津薪荼的算法日记》 《Linux操作系统及网络基础知识分享》 《c++基础知识详解》 《c语言基础知识详解》 ✨


1.上期参考代码

cpp 复制代码
/**
 * Definition for a binary tree node.
 * struct TreeNode {
 *     int val;
 *     TreeNode *left;
 *     TreeNode *right;
 *     TreeNode() : val(0), left(nullptr), right(nullptr) {}
 *     TreeNode(int x) : val(x), left(nullptr), right(nullptr) {}
 *     TreeNode(int x, TreeNode *left, TreeNode *right) : val(x), left(left), right(right) {}
 * };
 */
class Solution {
public:
    long  prev=LONG_MIN;//要取比int最小值还要小的值
    bool isValidBST(TreeNode* root) {
        if(root==nullptr)return true;//出口

        bool left=isValidBST(root->left);
        if(left==false)return false;//剪枝

        bool cur=false;
        if(root->val>prev)
        cur=true;

        if(cur==false) return false;//剪枝
        prev=root->val;
        bool right=isValidBST(root->right);

        return left&&right&&cur;
    }
};

2.本期知识点导图

3.本期要讲解的题目是

二叉搜索树中第 K 小的元素

要点:

本题延续上期的思路,给大家练习一下剪枝的操作

4.解题

延续上期的思路,这题很简单

无非是中序遍历二叉搜索树,把遍历到的第六个元素返回即可。

代码逻辑:

创建两个全局变量,count与ret,在中序遍历的过程中不断维护

count:初始化:count=k

遍历一次就自减一次,遍历过程中进行逻辑判断,count为0到时候,对应的值就是第k小的值。

问:先count--还是先判断count是否为0?
ret:count==0时,存储要返回的值

全局变量的好处:

  • 简化函数头的设计,本题的函数头只有一个参数,且无返回值
  • 方便函数逻辑模块化,本题中的遍历逻辑是在类中新建一个成员函数实现的,给其传参即可,复杂的算法可以将一个大问题简化成多个小问题

5.下期要讲解的题目是:

二叉树的所有路径

6.嗟食

如果小编写的内容对佬有帮助,还请大佬点点三连加关注哦
佬的支持就是我前进的最大动力 ~

期待与佬的再次相遇~

相关推荐
La Pulga3 小时前
【FreeRTOS源码学习笔记】任务延时列表
笔记·mcu·学习·嵌入式·freertos·实时操作系统
蜗牛一步步往上爬4 小时前
第十六章 C++语言在深度学习中的应用
开发语言·c++·深度学习
楚山之石4 小时前
【JCO】mpMRI 先行替代 TURBT 初始分期:BladderPath 随机试验让 MIBC 患者提前 45 天得到正确治疗
人工智能·学习·mri·医学影像
Navigator_Z7 小时前
LeetCode //C - 1317. Convert Integer to the Sum of Two No-Zero Integers
c语言·算法·leetcode
Peter-OK7 小时前
PostgreSQL学习笔记(入门-进阶-精通说明)
笔记·学习·postgresql
wo_jack7 小时前
C++ 入门笔记(十六):第16课 vector 模拟实现十问十答 —— 从三指针到迭代器失效
c++·后端·面试·stl·vector
承渊政道8 小时前
Linux网络学习【Reactor反应堆模式】
linux·网络·学习·ubuntu·reactor
D e re k ZH8 小时前
C++ 标准库算法全景指南
数据结构·c++·算法
冻柠檬飞冰走茶9 小时前
字母移动游戏题解:贪心求最长可保留连续子串(附 C 实现)
c语言·开发语言·数据结构·算法·动态规划