BST查找

一句话说明

BST 查找就是二分思想在树上的落地,每次比较后只走一边。

(附件 bst-search-path.svg 未随站点发布)

Go 代码:递归

func searchBST(root *TreeNode, val int) *TreeNode {
    if root == nil {
        return nil
    }
    if root.Val == val {
        return root
    }
    if val < root.Val {
        return searchBST(root.Left, val)
    }
    return searchBST(root.Right, val)
}

Go 代码:迭代

func searchBSTIterative(root *TreeNode, val int) *TreeNode {
    for root != nil {
        if root.Val == val {
            return root
        }
        if val < root.Val {
            root = root.Left
            continue
        }
        root = root.Right
    }
    return nil
}

易错点

别把 BST 当普通二叉树搜

左右一起搜会直接失去 BST 的剪枝价值。

相关主题


返回:树算法 | 算法学习导航