当前位置: 首页 > article >正文

二叉搜索树中的搜索(力扣700)

首先介绍一下什么是二叉搜索树。

    二叉搜索树是一个有序树:

  • 若它的左子树不空,则左子树上所有结点的值均小于它的根结点的值;
  • 若它的右子树不空,则右子树上所有结点的值均大于它的根结点的值;
  • 它的左、右子树也分别为二叉搜索树;

    这就决定了,二叉搜索树,递归遍历和迭代遍历和普通二叉树都不一样。
    就本题而言,我们使用递归法,遍历的顺序取决于节点的值的大小。而不是传统的前中后序。
    大家可以结合我的代码以及注释理解此题。
    代码及注释如下:
    /**
     * 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:
        TreeNode* searchBST(TreeNode* root, int val) {
            //创建一个变量存放递归函数的返回值
            TreeNode* result;
            //终止条件1:遍历到空节点
            if(root == NULL) return NULL;
            //终止条件2:遍历到的节点值等与val
            if(root -> val == val) return root;
            //如果当前节点值较大,则左递归
            if(root -> val > val){
              result = searchBST(root -> left,val);
            }
            //如果当前节点值较小,则右递归
            if(root -> val < val){
                result =  searchBST(root -> right,val);
            }
            return result;
        }
    };


http://www.kler.cn/a/519444.html

相关文章:

  • Android HandlerThread
  • 【C++基础】多线程并发场景下的同步方法
  • 【Linux-网络】初识计算机网络 Socket套接字 TCP/UDP协议(包含Socket编程实战)
  • GAEA:控制硅基生命如何理解人类
  • 青少年编程与数学 02-007 PostgreSQL数据库应用 14课题、触发器的编写
  • Unity入门2 背景叠层 瓦片规则
  • 与机器学习相关的概率论重要概念的介绍和说明
  • leetcode——缺失的第一个整数(java)
  • iic、spi以及uart
  • 【贪心算法】在有盾牌的情况下能通过每轮伤害的最小值(亚马逊笔试题)
  • Java设计模式 二十六 工厂模式 + 单例模式
  • [ Spring ] Spring Cloud Alibaba Message Stream Binder for RocketMQ 2025
  • 我谈区域偏心率
  • 【Android】乱七八糟的小结
  • 健身房项目 Uniapp+若依Vue3版搭建!!
  • gtest with ros
  • Qwen2-VL:在任何分辨率下增强视觉语言模型对世界的感知 (大型视觉模型 核心技术 分享)
  • AutoMapper的使用
  • stm8s单片机(三)时钟系统与时钟切换
  • 【工具】CountUp.js