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 的剪枝价值。