美文网首页
JS 笔试题——二叉搜索树中的搜索

JS 笔试题——二叉搜索树中的搜索

作者: 袭明_ | 来源:发表于2021-11-26 13:07 被阅读0次

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

    例如,给定二叉搜索树:

            4
           / \
          2   7
         / \
        1   3
    

    和值: 2

    你应该返回如下子树:

          2     
         / \   
        1   3
    

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

    定义通用节点:

    /**
     * Definition for a binary tree node.
     * function TreeNode(val, left, right) {
     *     this.val = (val===undefined ? 0 : val)
     *     this.left = (left===undefined ? null : left)
     *     this.right = (right===undefined ? null : right)
     * }
     */
    

    方法一:递归

    /**
     * @param {TreeNode} root
     * @param {number} val
     * @return {TreeNode}
     */
    var searchBST = function(root, val) {
        if (!root || root.val === val) {
            return root;
        }
    
        return root.val < val ? searchBST(root.right, val) : searchBST(root.left, val);
    };
    

    方法二:循环赋值

    /**
     * @param {TreeNode} root
     * @param {number} val
     * @return {TreeNode}
     */
    var searchBST = function(root, val) {
        while (root) {
            if (root.val === val) {
                return root;
            }
            root = root.val < val ? root.right : root.left;
        }
        return null;
    };
    

    相关文章

      网友评论

          本文标题:JS 笔试题——二叉搜索树中的搜索

          本文链接:https://www.haomeiwen.com/subject/izqztrtx.html