首页 > 其他分享 >Day49 代码随想录打卡|二叉树篇---二叉搜索树中的搜索

Day49 代码随想录打卡|二叉树篇---二叉搜索树中的搜索

时间:2024-06-12 16:57:22浏览次数:12  
标签:TreeNode val 随想录 二叉 搜索 二叉树 root 节点

题目(leecode T700):

给定二叉搜索树(BST)的根节点 root 和一个整数值 val

你需要在 BST 中找到节点值等于 val 的节点。 返回以该节点为根的子树。 如果节点不存在,则返回 null 。

方法:

递归法:本题考察了二叉搜索树的特性,二叉搜索树指的是在这个二叉树中,他的每一个根节点的值都大于他的左子树的值同时都小于他的右子树的值。这个特性对于我们查找某个节点就非常的容易,大了往左找,小了往右找即可。分析递归的三要素:

1.传入参数和返回值:这里需要传入的是二叉树的节点指针和我们需要搜索的值val

2:终止条件:根据二叉搜索树的处理逻辑,当我们遍历到空节点时,就说明这个树中没有我们需要查找的节点,当我们正好找到节点值等于val值时就说明有我们需要找的树

3:单层处理逻辑:本题的单层处理逻辑很简单,就是我们刚才分析的,如果当前root->val值大于我们需要找的val,那我们就往当前节点的左子树递归;反之往右子树递归。

题解:

class Solution {
public:
    TreeNode* searchBST(TreeNode* root, int val) {
        if(root == NULL || root->val == val) return root;            //终止条件
        TreeNode* result = NULL;
        if(root->val > val) result = searchBST(root->left, val);     //大了往左找
        if(root->val < val) result = searchBST(root->right, val);    //小了往右找
        return result;
    }
};

迭代法:
由于二叉搜索树特殊的特性,使得其使用迭代法也非常的简单。因为我们不需要回溯,每一步都是根据特性往下遍历的,大了往左,小了往右,直到找到了符合条件的节点就返回

题解:
 

class Solution {
public:
    TreeNode* searchBST(TreeNode* root, int val) {
        while(root != NULL){
            if(root->val > val) root =root->left;
            else if(root->val < val) root = root->right;
            else return root;
        }
        return NULL;
    }
};

标签:TreeNode,val,随想录,二叉,搜索,二叉树,root,节点
From: https://blog.csdn.net/m0_48909584/article/details/139630427

相关文章

  • 阿里巴巴中国站关键字搜索API返回值应用案例:精准定位目标用户群体
    阿里巴巴中国站的关键字搜索API返回值在精准定位目标用户群体方面,具有广泛的应用案例。这些应用案例主要集中在以下几个方面:数据分析与市场调研:通过关键字搜索API,商家可以获取大量与特定商品或服务相关的搜索数据。对这些数据进行深度分析,可以了解目标用户群体的搜索习惯......
  • 根据文件名快速搜索本地磁盘文件 2024年6月12日
      根据文件名快速搜索本地磁盘文件2024年6月12日            由于在用FileLocatorPro或者Archivarius3000对本地磁盘电脑硬盘中的文档表格进行全文搜索文件正文内容时需要预先索引,然而全文索引会占用大量的宝贵时间和磁盘存储空间,所以,我平......
  • 验证二叉搜索树-力扣
    第一次做这道题时,想的解法是递归去判断比较左节点小于中间节点,右节点大于中间节点,而这恰恰进入了陷阱,这道题不仅仅是判断子树是否左节点小于中间节点,右节点大于中间节点;要比较的是左子树所有节点小于中间节点,右子树所有节点大于中间节点。附上错误代码:classSolution{pu......
  • AI大模型探索之路-实战篇:智能化IT领域搜索引擎的构建与初步实践
    系列篇章......
  • LeetCode刷题之HOT100之单词搜索
    2024/6/12这两天天气只能用闷、潮、热来描述。整个人像被罩在为了饭菜保温的盖子里,喘气困难、粘稠的空气一次又一次打湿我。唯有空调救我,夏天来了。Anyway,昨天只做了一题,今天早点来做一题。1、题目描述2、逻辑分析给定一个二维字符矩阵和一个单词,求单词是否在这个二维......
  • 计算机毕业设计项目推荐,32127 爬虫-自驾游搜索系统(开题答辩+程序定制+全套文案 )上万套
    目 录摘要1绪论1.1研究背景1.2爬虫技术1.3flask框架介绍21.4论文结构与章节安排32 自驾游搜索系统分析42.1可行性分析42.2系统流程分析42.2.1数据增加流程52.3.2数据修改流程52.3.3数据删除流程52.3系统功能分析52.3.1功能性分析62.......
  • 五分钟“手撕”二叉树
    代码放开头,供大家查阅。但是对于树来说,更重要的是理解树的概念,树的概念很多,题却是千篇一律,这篇博客详细的讲解了概念,看完必有很大的收获。 目录一、实现代码二、什么是树三、树的重要概念四、什么是二叉树 二叉树概念:特殊的二叉树: 1.满二叉树:2.完全二叉树:......
  • 小报童精选专栏搜索订阅筛选教程
    小报童是什么小报童是一个付费内容服务,帮你把洞察转化为价值。目前已经有很多的大佬们在小报童上开通了自己的专栏。诸如我知道的就有以下大佬们开通了专栏。flomo的创始人少楠的创建的笔迹的方法的学习专栏生财有术的66个精选实操项目专栏stormzhang的帅张和他的朋友们......
  • 代码随想录算法训练营第第35天 | 977.有序数组的平方1005.K次取反后最大化的数组和 、
    1005.K次取反后最大化的数组和本题简单一些,估计大家不用想着贪心,用自己直觉也会有思路。https://programmercarl.com/1005.K次取反后最大化的数组和.html自己写的时间复杂度太高,看答案优化/***@param{number[]}nums*@param{number}k*@return{number}*/varl......
  • 代码随想录 算法训练营 d6 哈希表 Leetcode242 有效的字母异位词 Leetcode349 两个数
    哈希表很重要哈希表哈希表场景一般哈希表都是用来快速判断一个元素是否出现集合里一般来说数组模拟哈希set 哈希map不同的场景 当我们遇到了要快速判断一个元素是否出现集合里的时候,就要考虑哈希法。但是哈希法也是牺牲了空间换取了时间,因为我们要使用额外的数组,se......