LeetCode 700. 二叉搜索树中的搜索

发布时间 2023-05-29 16:49:36作者: 小星code

题目链接:LeetCode 700. 二叉搜索树中的搜索

题意:

给定二叉搜索树(BST)的根节点 root 和一个整数值 val。

你需要在 BST 中找到节点值等于 val 的节点。 返回以该节点为根的子树。 如果节点不存在,则返回 null 。

解题思路:

递归法

递归遍历二叉树,寻找与val相等的节点,找到即返回该节点

递归代码:

func searchBST(root *TreeNode, val int) *TreeNode {

    if root == nil {
        return nil
    } 
    if root.Val == val{
        return root
    }
    var res *TreeNode
    if root.Val > val {
        res = searchBST(root.Left,val)
    }else{
        res = searchBST(root.Right,val)
    }
    return res
}

迭代法

因为本题是二叉搜索树,它的中序遍历是有序的,因此可以根据当前节点的值与目标值val的大小关系,选择往左子树或者右子树走

迭代法代码:

func searchBST(root *TreeNode, val int) *TreeNode {

    if root == nil {
        return nil
    } 
    for root != nil {
        if root.Val == val{
            return root
        }
        if root.Val > val{
            root = root.Left
        }else{
            root = root.Right 
        }
    }
    return root
}