package test1;
/**
* @Author Administrator
* @Date 2022/4/7 22:46
*/
public class BinarySearch2 {
public static void main(String[] args) {
// 定义二叉树
int[] arr = {1,2,3,4,5,6,14,15,16,18};
// 调用查找数值的方法
ITERATIVE_SEARCH(arr,4,0,arr.length);
}
/**
* 查找的方法
* @param arr 二叉树的数组
* @param v 要查找的数字
* @param low 左子树指针
* @param high 右子树指针
*/
public static void ITERATIVE_SEARCH(int[] arr,int v,int low,int high){
// 检查待查找的区间
if (low < high){
// 将数组分成差不多相等的两部分
int mid = (low + high) / 2;
System.out.println("mid:"+mid+"==========arr["+arr[mid]+"]");
// 相等则输出下标
if (v == arr[mid]){
// 将所在位置返回
System.out.println("找到"+v+"在二叉树的位置为:"+mid);
}else if (v > arr[mid]){ // 大于则从右半部分找 递归调用查找方法
low = mid + 1;
ITERATIVE_SEARCH(arr, v, low, high);
}else if (v < arr[mid]){// 小于则从左半部分找
high = mid - 1;
ITERATIVE_SEARCH(arr, v, low, high);
}else {
System.out.println("不存在该数");
}
}
}
}
二叉树查找算法 Java
于 2022-04-08 16:52:17 首次发布