Skip to content

Find Closest Value In Bst

Category: Binary Search Trees

```

Problem Statement

(Problem statement not extracted)

```

Approach & Solution

Solution 1

``` Solution 1 Solution 2 class Program { // Average: O(log(n)) time | O(log(n)) space // Worst: O(n) time | O(n) space public static int findClosestValueInBst(BST tree, int target) { return findClosestValueInBst(tree, target, Double.MAX_VALUE); } public static int findClosestValueInBst(BST tree, int target, double closest) { if (Math.abs(target - closest) > Math.abs(target - tree.value)) { closest = tree.value; } if (target < tree.value && tree.left != null) { return findClosestValueInBst(tree.left, target, closest); } else if (target > tree.value && tree.right != null) { return findClosestValueInBst(tree.right, target, closest); } else { return (int) closest; } } static class BST { public int value; public BST left; public BST right; public BST(int value) { this.value = value; } } }

Solution 2

``` Solution 1 Solution 2 2 3 class Program { 4 // Average: O(log(n)) time | O(1) space 5 // Worst: O(n) time | O(1) space 6 public static int findClosestValueInBst(BST tree, int target) { 7 return findClosestValueInBst(tree, target, Double.MAX_VALUE); 8 } 9 10 public static int findClosestValueInBst(BST tree, int target, double closest) { 11 BST currentNode = tree; 12 while (currentNode != null) { 13 if (Math.abs(target - closest) > Math.abs(target - currentNode.value)) { 14 closest = currentNode.value; 15 } 16 if (target < currentNode.value) { 17 currentNode = currentNode.left; 18 } else if (target > currentNode.value) { 19 currentNode = currentNode.right; 20 } else { 21 break; 22 } 23 } 24 return (int) closest; 25 } 26 27 static class BST { 28 public int value; 29 public BST left; 30 public BST right; 31 32 public BST(int value) { 33 this.value = value; 34 } 35 } 36 } 37

```

Test Cases

``` Video Solution Video Solution

Test Case 1 { "tree": { "nodes": [ {"id": "10", "left": "5", "right": "15", "value": 10}, {"id": "15", "left": "13", "right": "22", "value": 15}, {"id": "22", "left": null, "right": null, "value": 22}, {"id": "13", "left": null, "right": "14", "value": 13}, {"id": "14", "left": null, "right": null, "value": 14}, {"id": "5", "left": "2", "right": "5-2", "value": 5}, {"id": "5-2", "left": null, "right": null, "value": 5}, {"id": "2", "left": "1", "right": null, "value": 2}, {"id": "1", "left": null, "right": null, "value": 1} ], "root": "10" }, "target": 12 } Test Case 2 { "tree": { "nodes": [ {"id": "100", "left": "5", "right": "502", "value": 100}, {"id": "502", "left": "204", "right": "55000", "value": 502}, {"id": "55000", "left": "1001", "right": null, "value": 55000}, {"id": "1001", "left": null, "right": "4500", "value": 1001}, {"id": "4500", "left": null, "right": null, "value": 4500}, {"id": "204", "left": "203", "right": "205", "value": 204}, {"id": "205", "left": null, "right": "207", "value": 205}, {"id": "207", "left": "206", "right": "208", "value": 207}, {"id": "208", "left": null, "right": null, "value": 208}, {"id": "206", "left": null, "right": null, "value": 206}, {"id": "203", "left": null, "right": null, "value": 203}, {"id": "5", "left": "2", "right": "15", "value": 5}, {"id": "15", "left": "5-2", "right": "22", "value": 15}, {"id": "22", "left": null, "right": "57", "value": 22}, {"id": "57", "left": null, "right": "60", "value": 57}, {"id": "60", "left": null, "right": null, "value": 60}, {"id": "5-2", "left": null, "right": null, "value": 5}, {"id": "2", "left": "1", "right": "3", "value": 2}, {"id": "3", "left": null, "right": null, "value": 3}, {"id": "1", "left": "-51", "right": "1-2", "value": 1}, {"id": "1-2", "left": null, "right": "1-3", "value": 1}, {"id": "1-3", "left": null, "right": "1-4", "value": 1}, {"id": "1-4", "left": null, "right": "1-5", "value": 1}, {"id": "1-5", "left": null, "right": null, "value": 1}, {"id": "-51", "left": "-403", "right": null, "value": -51}, {"id": "-403", "left": null, "right": null, "value": -403} ], "root": "100" }, "target": 100 } Test Case 3 { "tree": { "nodes": [ {"id": "100", "left": "5", "right": "502", "value": 100}, {"id": "502", "left": "204", "right": "55000", "value": 502}, {"id": "55000", "left": "1001", "right": null, "value": 55000}, {"id": "1001", "left": null, "right": "4500", "value": 1001}, {"id": "4500", "left": null, "right": null, "value": 4500}, {"id": "204", "left": "203", "right": "205", "value": 204}, {"id": "205", "left": null, "right": "207", "value": 205}, {"id": "207", "left": "206", "right": "208", "value": 207}, {"id": "208", "left": null, "right": null, "value": 208}, {"id": "206", "left": null, "right": null, "value": 206}, {"id": "203", "left": null, "right": null, "value": 203}, {"id": "5", "left": "2", "right": "15", "value": 5}, {"id": "15", "left": "5-2", "right": "22", "value": 15}, {"id": "22", "left": null, "right": "57", "value": 22}, {"id": "57", "left": null, "right": "60", "value": 57}, {"id": "60", "left": null, "right": null, "value": 60}, {"id": "5-2", "left": null, "right": null, "value": 5}, {"id": "2", "left": "1", "right": "3", "value": 2}, {"id": "3", "left": null, "right": null, "value": 3}, {"id": "1", "left": "-51", "right": "1-2", "value": 1}, {"id": "1-2", "left": null, "right": "1-3", "value": 1}, {"id": "1-3", "left": null, "right": "1-4", "value": 1}, {"id": "1-4", "left": null, "right": "1-5", "value": 1}, {"id": "1-5", "left": null, "right": null, "value": 1}, {"id": "-51", "left": "-403", "right": null, "value": -51}, {"id": "-403", "left": null, "right": null, "value": -403} ], "root": "100" }, "target": 208 } Test Case 4 { "tree": { "nodes": [ {"id": "100", "left": "5", "right": "502", "value": 100}, {"id": "502", "left": "204", "right": "55000", "value": 502}, {"id": "55000", "left": "1001", "right": null, "value": 55000}, {"id": "1001", "left": null, "right": "4500", "value": 1001}, {"id": "4500", "left": null, "right": null, "value": 4500}, {"id": "204", "left": "203", "right": "205", "value": 204}, {"id": "205", "left": null, "right": "207", "value": 205}, {"id": "207", "left": "206", "right": "208", "value": 207}, {"id": "208", "left": null, "right": null, "value": 208}, {"id": "206", "left": null, "right": null, "value": 206}, {"id": "203", "left": null, "right": null, "value": 203}, {"id": "5", "left": "2", "right": "15", "value": 5}, {"id": "15", "left": "5-2", "right": "22", "value": 15}, {"id": "22", "left": null, "right": "57", "value": 22}, {"id": "57", "left": null, "right": "60", "value": 57}, {"id": "60", "left": null, "right": null, "value": 60}, {"id": "5-2", "left": null, "right": null, "value": 5}, {"id": "2", "left": "1", "right": "3", "value": 2}, {"id": "3", "left": null, "right": null, "value": 3}, {"id": "1", "left": "-51", "right": "1-2", "value": 1}, {"id": "1-2", "left": null, "right": "1-3", "value": 1}, {"id": "1-3", "left": null, "right": "1-4", "value": 1}, {"id": "1-4", "left": null, "right": "1-5", "value": 1}, {"id": "1-5", "left": null, "right": null, "value": 1}, {"id": "-51", "left": "-403", "right": null, "value": -51}, {"id": "-403", "left": null, "right": null, "value": -403} ], "root": "100" }, "target": 4500 } Test Case 5 { "tree": { "nodes": [ {"id": "100", "left": "5", "right": "502", "value": 100}, {"id": "502", "left": "204", "right": "55000", "value": 502}, {"id": "55000", "left": "1001", "right": null, "value": 55000}, {"id": "1001", "left": null, "right": "4500", "value": 1001}, {"id": "4500", "left": null, "right": null, "value": 4500}, {"id": "204", "left": "203", "right": "205", "value": 204}, {"id": "205", "left": null, "right": "207", "value": 205}, {"id": "207", "left": "206", "right": "208", "value": 207}, {"id": "208", "left": null, "right": null, "value": 208}, {"id": "206", "left": null, "right": null, "value": 206}, {"id": "203", "left": null, "right": null, "value": 203}, {"id": "5", "left": "2", "right": "15", "value": 5}, {"id": "15", "left": "5-2", "right": "22", "value": 15}, {"id": "22", "left": null, "right": "57", "value": 22}, {"id": "57", "left": null, "right": "60", "value": 57}, {"id": "60", "left": null, "right": null, "value": 60}, {"id": "5-2", "left": null, "right": null, "value": 5}, {"id": "2", "left": "1", "right": "3", "value": 2}, {"id": "3", "left": null, "right": null, "value": 3}, {"id": "1", "left": "-51", "right": "1-2", "value": 1}, {"id": "1-2", "left": null, "right": "1-3", "value": 1}, {"id": "1-3", "left": null, "right": "1-4", "value": 1}, {"id": "1-4", "left": null, "right": "1-5", "value": 1}, {"id": "1-5", "left": null, "right": null, "value": 1}, {"id": "-51", "left": "-403", "right": null, "value": -51}, {"id": "-403", "left": null, "right": null, "value": -403} ], "root": "100" }, "target": 4501 } Test Case 6 { "tree": { "nodes": [ {"id": "100", "left": "5", "right": "502", "value": 100}, {"id": "502", "left": "204", "right": "55000", "value": 502}, {"id": "55000", "left": "1001", "right": null, "value": 55000}, {"id": "1001", "left": null, "right": "4500", "value": 1001}, {"id": "4500", "left": null, "right": null, "value": 4500}, {"id": "204", "left": "203", "right": "205", "value": 204}, {"id": "205", "left": null, "right": "207", "value": 205}, {"id": "207", "left": "206", "right": "208", "value": 207}, {"id": "208", "left": null, "right": null, "value": 208}, {"id": "206", "left": null, "right": null, "value": 206}, {"id": "203", "left": null, "right": null, "value": 203}, {"id": "5", "left": "2", "right": "15", "value": 5}, {"id": "15", "left": "5-2", "right": "22", "value": 15}, {"id": "22", "left": null, "right": "57", "value": 22}, {"id": "57", "left": null, "right": "60", "value": 57}, {"id": "60", "left": null, "right": null, "value": 60}, {"id": "5-2", "left": null, "right": null, "value": 5}, {"id": "2", "left": "1", "right": "3", "value": 2}, {"id": "3", "left": null, "right": null, "value": 3}, {"id": "1", "left": "-51", "right": "1-2", "value": 1}, {"id": "1-2", "left": null, "right": "1-3", "value": 1}, {"id": "1-3", "left": null, "right": "1-4", "value": 1}, {"id": "1-4", "left": null, "right": "1-5", "value": 1}, {"id": "1-5", "left": null, "right": null, "value": 1}, {"id": "-51", "left": "-403", "right": null, "value": -51}, {"id": "-403", "left": null, "right": null, "value": -403} ], "root": "100" }, "target": -70 } Test Case 7 { "tree": { "nodes": [ {"id": "100", "left": "5", "right": "502", "value": 100}, {"id": "502", "left": "204", "right": "55000", "value": 502}, {"id": "55000", "left": "1001", "right" ... (test file truncated for display)