【数据结构/C++】二分查找
2023-12-14 17:40:20
二分查找:根据索引二分,循环查找的条件是左索引小于等于右索引。
二叉树需要判断自身根是否为NULL,并通过改变current的值进行判断。
#include <iostream>
using namespace std;
// 长度为 N 的有序表nums 中查找 target
int BiSearch(int *nums, int N, int target)
{
int l = 0, r = N - 1;
while (l <= r)
{
int mid = (l + r) / 2;
if (target == nums[mid])
{
return mid;
}
if (target < nums[mid])
{
r = mid - 1;
}
if (target > nums[mid])
{
l = mid + 1;
}
}
return -1;
}
// 二叉树
typedef struct TreeNode
{
int data;
struct TreeNode *left, *right;
} TreeNode;
TreeNode *SearchTree(TreeNode *root, int target)
{
if (!root)
{
return NULL;
}
TreeNode *current = root;
while (current)
{
if (target == current->data)
{
return current;
}
if (target < current->data)
{
current = current->left;
}
else
{
current = current->right;
}
}
return NULL;
}
int main()
{
int nums[10] = {1, 3, 5, 7, 9, 11, 13, 15, 17, 19};
cout << BiSearch(nums, 10, 5) << endl;
return 0;
}
文章来源:https://blog.csdn.net/XiugongHao/article/details/134851114
本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。 如若内容造成侵权/违法违规/事实不符,请联系我的编程经验分享网邮箱:veading@qq.com进行投诉反馈,一经查实,立即删除!
本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。 如若内容造成侵权/违法违规/事实不符,请联系我的编程经验分享网邮箱:veading@qq.com进行投诉反馈,一经查实,立即删除!