首页 > 其他分享 >day38_0700.二叉搜索树中的搜索

day38_0700.二叉搜索树中的搜索

时间:2022-12-17 22:56:31浏览次数:41  
标签:NULL return val root 搜索 searchBST TreeNode 0700 树中

0700.二叉搜索树中的搜索

class Solution {
public:
    TreeNode* searchBST(TreeNode* root, int val) {
        if (root == NULL)   return NULL;
        if (root->val == val)   return root;
        TreeNode* result = new TreeNode;
        if (root->val > val)  result = searchBST(root->left, val);
        if (root->val < val)  result = searchBST(root->right, val);  
        return result;
    }
};
  • ac
  • 递归代码思路大体上没问题 但是对于返回结果这部分有些问题---见下
  • 关于result这个变量的定义和使用还不熟悉本质原因-----对递归的理解有些欠缺
    • 能想到如果要去分别遍历左子树 右子树 那么需要调用自己这个函数本身 但是函数需要一个返回值来承接 能想到或许需要定义一个TreeNode*类型的结点node-----------其实就是上述代码里的result 但是想不到最后需要return node------------即上述代码return result;
  • 对于返回值的处理 也可以这样
class Solution {
public:
    TreeNode* searchBST(TreeNode* root, int val) {
        if (root == NULL || root->val == val) return root;
        if (root->val > val) return searchBST(root->left, val);
        if (root->val < val) return searchBST(root->right, val);
        return NULL;
    }
};
  • 有必要好好比较比较上述两段代码
  • 迭代法代码见下
class Solution {
public:
    TreeNode* searchBST(TreeNode* root, int val) {
        if (root == NULL)   return NULL;
        while (root != NULL) {
            if (root->val == val)   return root;
            if (root->val > val)    root = root->left;
            else
                root = root->right;
        }
        return NULL;
    }
};
  • 上面是我的 ac 下面是卡哥的ac
  • 注意 while里如果是三个if 那么前面的执行结果会影响到后面的 三个if不是并列!!!!
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;
    }
};

标签:NULL,return,val,root,搜索,searchBST,TreeNode,0700,树中
From: https://www.cnblogs.com/deservee/p/16989772.html

相关文章

  • 运行所选代码生成器时出错:参数"searchfolders不包含任何项。请至少提供一个用于搜索
    asp.netwebmvc新建控制器时出现错误,新建控制器-包含读/写操作的MVC5控制器,出现如下错误:(这是一个电脑上新建的项目在另一个电脑上打开了,可能两个电脑环境不完全一致,......
  • 二分搜索算法
    二分搜索算法适用于有序数组。如果按照暴力搜索算法,那么需要从头到尾遍历数组元素,时间复杂度为O(n),而如果使用二分搜索,那么其时间复杂度为O(logn),根据时间复杂度曲线图可......
  • 搜索问题 DFS BFS
    搜索问题DFSBFSDFSdfs更多用于解决存在性问题和遍历性问题他可以很容易找到一个东西是否存在,比如说一条路径是否存在,不需要恢复现场也可以比较方便的展示所有的情况,......
  • 前端知识学习案例5vs code-搜索和替换全局内容
    替换文件......
  • 有感于百度网页搜索再创“辉煌”
    根据艾瑞的报告,百度在中国的网页搜索市场份额增至83.6%再创了历史的新高,而百度最大的竞争对手谷歌用户却在一直流失,份额已经降至11.1%。83.​谷歌在中国搜索市场中的境况......
  • Google搜索百宝箱重新显示在左侧的办法
    ​Google的心思你别猜,你猜来猜去也猜不明白,好端端的放在左侧的搜索百宝箱,就非得硬生生的挪到上面,跟硬又黑导航条重复不说,要对搜索结果做个调节,还得先点Searchtools将百宝......
  • 【招聘内推】美团招聘搜索推荐算法工程师(核心组)
    美团搜索与NLP部招聘搜索算法工程师,Base北京,感兴趣的小伙伴可以(联系时可备注来自智能推荐系统公众号)岗位职责:1、优化美团外卖搜索的搜索体验,持续优化召回和排序效果,提升线......
  • Ztree实现搜索框自动检索功能
    ztree自定搜索框添加搜索功能,注:菜单内容一次性加载,后端数据使用父子嵌套的json数据  前段代码:<!DOCTYPEhtml><html><head><metacharset="utf-8"/><t......
  • 【Linux】Linux命令大全——解压、目录、文件、搜索等
    文件目录​​1、常用命令​​​​常用Linux命令的基本使用​​​​2、查阅命令帮助信息​​​​2.1help帮助信息​​​​2.2man手册​​​​3、目录常用命令​​​​3.1......
  • 这就是搜索引擎(8) 网页去重
    1.背景1.1重复网页的类型在互联网中,近似重复网页(NearDuplicateWebPage)的数量占网页总数的比例高达29%,完全相同的页面占全部页面的22%,其中根据内容和布局又可以分......