leetcode700-二叉搜索树中的搜索

原题

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

例如,

给定二叉搜索树:

        4
       / \
      2   7
     / \
    1   3

和值: 2

你应该返回如下子树:

      2
     / \
    1   3

在上述示例中,如果要找的值是 5,但因为没有节点值为 5,我们应该返回 NULL

解法

思想

根据BST的特性,对于每个节点:

  1. 如果目标值等于节点的值,则返回节点;
  2. 如果目标值小于节点的值,则继续在左子树中搜索;
  3. 如果目标值大于节点的值,则继续在右子树中搜索。

如此递归搜索。

代码

class Solution {
    public TreeNode searchBST(TreeNode root, int val) {
        if(root==null)return null;
        if(root.val == val) return root;
        else if(root.val < val) return searchBST(root.right,val);
        else return searchBST(root.left,val);
    }
}

原创文章,作者:彭晨涛,如若转载,请注明出处:https://www.codetool.top/article/leetcode700-%e4%ba%8c%e5%8f%89%e6%90%9c%e7%b4%a2%e6%a0%91%e4%b8%ad%e7%9a%84%e6%90%9c%e7%b4%a2/

(0)
彭晨涛彭晨涛管理者
上一篇 2020年1月16日 01:05
下一篇 2020年1月16日

相关推荐

发表回复

登录后才能评论