Riya W.
asked 08/12/21Binary search in c++,please slove the code so i can copy paste.I also mentioned the code in the comment.
1 Expert Answer

Patrick B. answered 08/13/21
Math and computer tutor/teacher
int main(){
// Create a binary search tree
BinarySearchTree bst;
// Insert nodes: 10, 5, 15, 2, 7, 13, 6, 8, 11, 17
int iNums[]={10,5,15,2,7,13,6,8,11,17};
int N=10;
for (int iloop=0; iloop<N; iloop++)
{
bst.insertNode(iNums[iloop]);
}
// Print the tree
bst.printTree();
// Print tree height
cout << bst.getHeight();
// Print the minimum value in the tree
cout << bst.findMinNode();
// Print the maximum value in the tree
cout << bst.findMaxNode();
// Print the number of nodes in the tree
cout << bst.treeLength();
// Manually print the nodes at each level (see example below)
cout << "Level 0: 10" << endl;
// Delete exactly two nodes to make the tree full and complete
bst.deleteNode(8);
bst.deleteNode(17);
// Print tree again
bst.printTree();
// Insert 8 more nodes but make sure that tree becomes full and complete
bst.insertNode(3);
bst.insertNode(4);
bst.insertNode(12);
bst.insertNode(16);
bst.insertNode(18);
bst.insertNode(21);
bst.insertNode(19);
bst.insertNode(24);
// Print tree again
bst.printTree();
// Delete all the nodes in the tree
bst.makeEmpty();
// Print the tree again
bst.printTree();
}
Still looking for help? Get the right answer, fast.
Get a free answer to a quick problem.
Most questions answered within 4 hours.
OR
Choose an expert and meet online. No packages or subscriptions, pay only for the time you need.
Riya W.
int treeLength(TreeNode *tree){ if(tree==NULL){ return 0; } return 1+treeLength(tree->left)+treeLength(tree->right); } bool findNode(TreeNode *tree, int data){ if(tree==NULL){ return false; } if(tree->data == data){ return true; }else if(data < tree->data){ return findNode(tree->left,data); }else{ return findNode(tree->right,data); } } TreeNode* retrieveNode(TreeNode *tree, int data){ if(tree==NULL){ return NULL; } if(tree->data == data){ return tree; }else if(data < tree->data){ return retrieveNode(tree->left,data); }else{ return retrieveNode(tree->right,data); } } void deleteNode(TreeNode *&tree, int data){ if(tree == NULL){ return; } if(tree->data == data){ if(tree->left == NULL && tree->right == NULL){ delete tree; tree = NULL; }else if(tree->left != NULL){ int maxLeftNode = findMaxNode(tree->left); tree->data = maxLeftNode; deleteNode(tree->left,maxLeftNode); }else{ int minRightNode = findMinNode(tree->right); tree->data = minRightNode; deleteNode(tree->right,minRightNode); } }else if(tree->data < data){ deleteNode(tree->right,data); }else{ deleteNode(tree->left,data); } } int findMinNode(TreeNode *tree){ if(tree == NULL){ return -1; }else if(tree->left == NULL){ return tree->data; }else{ return findMinNode(tree->left); } } int findMaxNode(TreeNode *tree){ if(tree == NULL){ return -1; }else if(tree->right == NULL){ return tree->data; }else{ return findMaxNode(tree->right); } } void makeEmpty(TreeNode *&tree){ if(tree == NULL){ return; } makeEmpty(tree->left); makeEmpty(tree->right); delete tree; tree = NULL; } int getHeight(TreeNode *tree){ if(tree == NULL){ return 0; } int lsh = 1+getHeight(tree->left); int rsh = 1+getHeight(tree->right); if(lsh > rsh){ return lsh; }else{ return rsh; } } public: BinarySearchTree(){ root = NULL; } void insertNode(int data){ insertNode(root,data); } void printTree(){ printTree(root); } int treeLength(){ treeLength(root); } TreeNode* retrieveNode(int data){ return retrieveNode(root,data); } bool findNode(int data){ return findNode(root,data); } void deleteNode(int data){ deleteNode(root,data); } int findMinNode(){ findMinNode(root); } int findMaxNode(){ findMaxNode(root); } bool isBalanced(); void makeEmpty(){ makeEmpty(root); } int getHeight(){ getHeight(root); } bool isEmpty(){ if(root == NULL){ return true; }else{ return false; } } }; int main(){ // Create a binary search tree // Insert nodes: 10, 5, 15, 2, 7, 13, 6, 8, 11, 17 // Print the tree // Print tree height // Print the minimum value in the tree // Print the maximum value in the tree // Print the number of nodes in the tree // Manually print the nodes at each level (see example below) cout << "Level 0: 10" << endl; // Delete exactly two nodes to make the tree full and complete // Print tree again // Insert 8 more nodes but make sure that tree becomes full and complete // Print tree again // Delete all the nodes in the tree // Print the tree again }08/12/21