const arr = [];/** * 生成数字 * @param {Number} len 数据的长度 */function createArr(len) { for (let i = 0; i < len; i++) { arr.push(Math.floor(Math.random() * 10000)) }}createArr(10000)/** * Node类 */class Node { constructor(value) { this.value = value; this.left = null; this.right = null; }}/** * 生成二叉搜索树 * @param {Array} arr 数组 */function buildSearchTree(arr) { if (arr == null || arr.length == 0) return; let root = new Node(arr[0]); for (let i = 1; i < arr.length; i++) { addNode(root, arr[i]) } return root;}/** * 生成子树 * @param {Object} root 根节点 * @param {Number} num 需要比对的数字 */function addNode(root, num) { if (num == null) return; if (root.value == num) return; if (root.value < num) {// num大于root num会在root的右子树 if (root.right == null) root.right = new Node(num); else addNode(root.right, num); } else { // num小于root,num会在root的左子树 if (root.left == null) root.left = new Node(num); else addNode(root.left, num); }}let root = buildSearchTree(arr)/** * 二叉树搜索 * @param {Object} root 根节点 * @param {Number} target 目标值 */function searchNode(root, target) { num++; if(root == null ) return false; if(root.value == target) return true; if(root.value < target) return searchNode(root.right,target) else return searchNode(root.left, target);}let result = searchNode(root , 1000)console.log(result , num)