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

数据结构与算法之二叉树: LeetCode 700. 二叉搜索树中的搜索 (Ts版)

二叉搜索树中的搜索

  • https://leetcode.cn/problems/search-in-a-binary-search-tree/

描述

  • 给定二叉搜索树(BST)的根节点 root 和一个整数值 val
  • 你需要在 BST 中找到节点值等于 val 的节点。 返回以该节点为根的子树
  • 如果节点不存在,则返回 null

示例 1

输入:root = [4,2,7,1,3], val = 2
输出:[2,1,3]

示例 2

输入:root = [4,2,7,1,3], val = 5
输出:[]

提示

  • 树中节点数在 [1, 5000] 范围内
  • 1 <= Node.val <= 1 0 7 10^7 107
  • root 是二叉搜索树
  • 1 <= val <= 1 0 7 10^7 107

Typescript 版算法实现


1 ) 方案:递归

/**
 * Definition for a binary tree node.
 * class TreeNode {
 *     val: number
 *     left: TreeNode | null
 *     right: TreeNode | null
 *     constructor(val?: number, left?: TreeNode | null, right?: TreeNode | null) {
 *         this.val = (val===undefined ? 0 : val)
 *         this.left = (left===undefined ? null : left)
 *         this.right = (right===undefined ? null : right)
 *     }
 * }
 */

function searchBST(root: TreeNode | null, val: number): TreeNode | null {
    if (!root) return null;
    if (val === root.val) return root;
    return searchBST(val < root.val ? root.left : root.right, val);
};

2 ) 方案:迭代

/**
 * Definition for a binary tree node.
 * class TreeNode {
 *     val: number
 *     left: TreeNode | null
 *     right: TreeNode | null
 *     constructor(val?: number, left?: TreeNode | null, right?: TreeNode | null) {
 *         this.val = (val===undefined ? 0 : val)
 *         this.left = (left===undefined ? null : left)
 *         this.right = (right===undefined ? null : right)
 *     }
 * }
 */

function searchBST(root: TreeNode | null, val: number): TreeNode | null {
    while (root) {
        if (val === root.val) return root;
        root = val < root.val ? root.left : root.right;
    }
    return null;
};

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

相关文章:

  • 51单片机 AT24C02(I2C总线)
  • 数据结构与算法之二叉树: LeetCode 543. 二叉树的直径 (Ts版)
  • Jaeger UI使用、采集应用API排除特定路径
  • 《自动驾驶与机器人中的SLAM技术》ch1:自动驾驶
  • Jina AI/Reader:将 URL 和 PDF 内容自动化提取并转换为 LLM 可处理文本
  • 深度学习知识点:LSTM
  • 【网络云SRE运维开发】2025第2周-每日【2025/01/10】小测-【第10章 ACL理论和实操考试】解析
  • Golang——channel
  • DS内排—堆排序
  • LeetCode 521最长特殊序列
  • 【STM32-学习笔记-3-】TIM定时器
  • 【C++开源库】Boost.Asio网络库使用介绍
  • 大模型训练(2):内存开销
  • 网络安全-网站协议请求报文(基础篇)
  • NVIDIA Clara平台助力医学影像处理:编程案例与实践探索(下)
  • Word表格内容批量写入Excel
  • 动态规划【打家劫舍】
  • 【python爬虫入门教程13--selenium的自动点击 --小小案例分享】
  • 挖掘用户价值:链动2+1模式、AI智能名片与S2B2C商城小程序的应用研究
  • tensor core实现flash_attn_mma_share_kv源码分析
  • WebSocket、SSE(Server-Sent Events)、HTTP 和 Axios关系总结
  • openEuler安装docker
  • 做一个 简单的Django 《股票自选助手》显示 用akshare 库(A股数据获取)
  • SpringBoot整合Easy-es
  • 计算机网络之---防火墙与入侵检测系统(IDS)
  • 【Rust自学】11.9. 单元测试