Given the following node structure for a Binary Search Tree…
Given the following node structure for a Binary Search Tree (BST): class TreeNode { public: int value; TreeNode* left; TreeNode* right; }; (1) Write a recursive function: bool search(TreeNode* root, int key) that returns true if the key exists in the BST, and false otherwise. (2) Write a function: void printInOrder(TreeNode* root) that prints the values stored in the BST in non-decreasing (ascending) order.