How it works
Locate a key in a binary search tree by descending left or right based on comparisons.
Implementation
function bstSearchOp(state, target) { const keys = state.keys; const left = state.left; const right = state.right; let current = state.root; while (current !== -1) { visitNode(current); compareKeys(current, target); if (target === keys[current]) { reportFound(current); return; } if (target < keys[current]) { current = left[current]; } else { current = right[current]; } } reportNotFound(); }
def bstSearchOp(state, target): keys = state.keys left = state.left right = state.right current = state.root while (current != -1): visitNode(current) compareKeys(current, target) if (target == keys[current]): reportFound(current) return if (target < keys[current]): current = left[current] else: current = right[current] reportNotFound()
#include <vector> #include <algorithm> void bstSearchOp(int state, int target) { auto keys = state.keys; auto left = state.left; auto right = state.right; auto current = state.root; while((current != -1)) { visitNode(current); compareKeys(current, target); if((target == keys[current])) { reportFound(current); return; } if((target < keys[current])) { current = left[current]; } else { current = right[current]; } } reportNotFound(); }
public void bstSearchOp(int state, int target) { var keys = state.keys; var left = state.left; var right = state.right; var current = state.root; while((current != -1)) { visitNode(current); compareKeys(current, target); if((target == keys[current])) { reportFound(current); return; } if((target < keys[current])) { current = left[current]; } else { current = right[current]; } } reportNotFound(); }
#include <stdio.h> void bstSearchOp(int state, int target) { var keys = state.keys; var left = state.left; var right = state.right; var current = state.root; while((current != -1)) { visitNode(current); compareKeys(current, target); if((target == keys[current])) { reportFound(current); return; } if((target < keys[current])) { current = left[current]; } else { current = right[current]; } } reportNotFound(); }