leetcode 700 二叉搜索树中的搜索

这篇博客介绍了如何在二叉搜索树中查找特定值的节点。提供了层序遍历和递归两种解法。层序遍历通过队列实现,逐层检查节点;递归解法则根据根节点值与目标值的关系决定是在左子树还是右子树继续搜索。两种方法都能在O(log n)的时间复杂度内找到目标节点。
摘要由CSDN通过智能技术生成

## 思路

原题链接

  1. 可以采用层序遍历的解法 如第一种方式
  2. 也可以采用递归解法 如第二种
  3. 二刷:若找到则直接返回 当前的节点即可
  4. 二刷:使用递归实现的过程中,最后的通过root.val的节点值,来选择是searchBST左子树和右子树的时候,选择的方式是 root.val < val ? … : …, 此时不用添加 if 条件判断
class Solution {
    public TreeNode searchBST(TreeNode root, int val) {
        Queue<TreeNode> que = new LinkedList<>();
        que.offer(root);
        while(!que.isEmpty()){
            int size = que.size();
            for(int i = 0; i < size; i++){
                TreeNode node = que.poll();
                if(node.val == val){
                    return node;
                }
                if(node.left != null) que.offer(node.left);
                if(node.right != null) que.offer(node.right);
            }
        }
        return null;
    }
}

//递归解法

class Solution {
    public TreeNode searchBST(TreeNode root, int val) {
        if (root == null || root.val == val) return root;
        return root.val < val ? searchBST(root.right, val) : searchBST(root.left, val);
    }
}
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值