返回轨道
算法 · 2026-05-14 · 18 阅读

P67 二叉搜索树中查找数字

算法 18 阅读

信号摘要

难度:Easy · 时长:03:25 · leetcode 700

P67 二叉搜索树中查找数字

未对外公开播放权限
点击查看说明

描述

这个题目说的是,给你一棵二叉搜索树和一个数字,你要在二叉搜索树上找到这个数字,并返回它所在的节点。如果找不到这个数字,就返回空指针。

二叉搜索树的定义是:
  1. 左子树所有节点上的值都小于根节点上的值
  2. 右子树所有节点上的值都大于根节点上的值
  3. 左右子树同时也为二叉搜索树

比如说,给你的二叉搜索树是:

 8
/ \

2 16 /
1 4

给你的数字是 1。1 在这棵二叉搜索树里,因此你要返回节点 1。

如果给你的数字是 42,不在这棵树中,则返回空指针。

代码

public class AlgoCasts {

  public class TreeNode {
    int val;
    TreeNode left;
    TreeNode right;

    TreeNode(int x) {
      val = x;
    }
  }

  // Time: O(h), Space: O(h)
  public TreeNode searchBSTRecursive(TreeNode root, int val) {
    if (root == null || val == root.val) return root;
    else if (val < root.val) return searchBSTRecursive(root.left, val);
    else return searchBSTRecursive(root.right, val);
  }

  // Time: O(h), Space: O(1)
  public TreeNode searchBSTIterative(TreeNode root, int val) {
    while (root != null && val != root.val) {
      if (val < root.val) root = root.left;
      else root = root.right;
    }
    return root;
  }

}

📡 通讯频道