搜索:

顺序搜索:
暴力搜索,从前往后依次查找。
二叉搜索树:

二分搜索:

深度优先搜索:
以图为例:从V0开始访问,遇到重复的就改道或退回,直到所有点被遍历到。


广度优先搜索:
一层一层搜索。

例子:
二分查找
给定一个 n 个元素有序的(升序)整型数组 nums 和一个目标值 target ,写一个函数搜索 nums 中的 target,如果目标值存在返回下标,否则返回 -1。
class Solution:
def search(self, nums: List[int], target: int) -> int:
left = 0
right = len(nums)-1
while left <= right:
mid = (left+right)//2
if nums[mid] == target:
return mid
if nums[mid] < target:
left = mid + 1
else:
right = mid - 1
return -1
搜索旋转排序数组
class Solution:
def search(self, nums: List[int], target: int) -> int:
left = 0
right = len(nums)-1
while left <= right:
mid = (left+right)//2
if nums[mid] == target:
return mid
if nums[mid] >= nums[left]:
if target > nums[mid]:
left = mid + 1
else:
if target == nums[left]:
return left
if target > nums[left]:
right = mid - 1
else:
left = mid + 1
else:
if target < nums[mid]:
right = mid -1
else:
if target == nums[right]:
return right
if target < nums[right]:
left = mid +1
else:
right = mid -1
return -1
任务:
二叉树的中序遍历
对称二叉树
二叉搜索树中第K小的元素
本文探讨了顺序搜索、二分搜索、深度优先搜索和广度优先搜索等经典算法,并通过实例展示了它们在二分查找和搜索旋转排序数组中的应用。此外,还涉及了二叉树的中序遍历、对称二叉树以及二叉搜索树中找到第K小元素的方法。
527

被折叠的 条评论
为什么被折叠?



