Leetcode700. 二叉树中的搜索

题目

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

例如,

给定二叉搜索树:

        4
       / \
      2   7
     / \
    1   3

和值: 2
你应该返回如下子树:

      2     
     / \   
    1   3

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

Swift解法

递归查找

class Solution {
    func searchBST(_ root: TreeNode?, _ val: Int) -> TreeNode? {
        guard let rootVal = root?.val else {
            return nil
        }
        if rootVal == val {
            return root
        } else if rootVal < val {
            return searchBST(root?.right, val)
        } else {
            return searchBST(root?.left, val)
        }
    }
}

循环查找

class Solution {
    func searchBST(_ root: TreeNode?, _ val: Int) -> TreeNode? {
        var node = root
        while node != nil {
            let value = (node?.val)!
            if value == val {
                return node
            } else if value < val {
                node = node?.right
            } else {
                node = node?.left
            }
        }
        return nil
    }
}

来源:力扣(LeetCode)
链接:https://leetcode-cn.com/problems/search-in-a-binary-search-tree

你可能感兴趣的:(Leetcode700. 二叉树中的搜索)