700. Search in a Binary Search Tree(二叉搜索树中的搜索)

题目描述

Given the root node of a binary search tree (BST) and a value. You need to find the node in the BST that the node’s value equals the given value. Return the subtree rooted with that node. If such node doesn’t exist, you should return NULL.

在这里插入图片描述In the example above, if we want to search the value 5, since there is no node with value 5, we should return NULL.

Note that an empty tree is represented by NULL, therefore you would see the expected output (serialized tree format) as [], not null.

方法思路

Approach1: recursive

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

Approach2: 将尾递归改为非递归的形式

class Solution{
    //Runtime: 1 ms, faster than 100.00%
    public TreeNode searchBST(TreeNode root, int val){
        if(root == null) return root;
        if(val == root.val) return root;
        while(root != null){
            if(val == root.val)
                return root;
            else if(val < root.val)
                 root = root.left;
            else
                root = root.right;
        }
        return null;
    }
}

版权声明:本文为IPOC_BUPT原创文章,遵循CC 4.0 BY-SA版权协议,转载请附上原文出处链接和本声明。