二分查找 // 数组a必须是有序的 public static int get(int key, int[] a) { int lo = 0, hi = a.length - 1; while (lo <= hi) { int mid = lo + (hi - lo) / 2; if (key < a[mid]) { hi = mid - 1; } else if (key > a[mid]) { lo = mid + 1; } else { return mid; } } return -1; } 二叉搜索树查找 class TreeNode { int val; TreeNode left; TreeNode right; TreeNode(int val) { this.val = val; } } public static get(TreeNode root, int val) { TreeNode node = null, cur = root; while (cur != null) { if (val > cur.val) { cur = cur.right; } else if (val < cur.val) { cur = cur.left; } else { node = cur; break; } } return node; }