-
November 19th, 2013, 12:32 AM
#1
Binary Search tree
I am unable to implement the insert function properly,every time i run the program i just get the first value and name,i am not getting other Id's and name.Please help!Thanks
Code:
"(Header File)"
#include <iostream>
#include <string>
using namespace std;
class node
{
public:
int ID;
node (string StudentName, int IDNumber) {
name = StudentName;
ID = IDNumber; // key value
left = NULL;
right = NULL;
parent = NULL;
}
}; // end class node
class bst {
class node *root; // root of the tree
// print in ascending order of IDs
void printInOrder(class node *n)
{
if (n == NULL){
//nothing to print
return;}
// recursively print left sub-tree
printInOrder(n->left);
// print this node;
cout << "<" << n->ID << ", " << n->name << ">" << endl;
// recursively print right subtree
printInOrder(n->right);
}
public:
bst() {
root = NULL;}
void print() {
printInOrder(root);
}
bool insert(string StudentName, int IDNumber);
// returns true if successfully inserted
// otherwise returns false (if matching ID exists in BST)
};
"(Main file)"
#include "bst.h"
int main() {
class bst *tree = new bst();
while (1) {
int choice;
// 1 to insert a record, 2 to remove a record, 3 to print records in ascending order of IDs, 0 to exit
int StudentID;
string StudentName;
cout << endl << "Enter choice (1 to insert a record, 2 to remove a record, 3 to print records, 0 to exit): ";
cin >> choice;
if (choice == 0) {
break;
}
else if (choice == 1) {
cout << endl << "Enter new student ID: ";
cin >> StudentID
cout<< "Enter new student name: ";
cin >> StudentName;
if (tree->insert(StudentName, StudentID))
cout << "New student record inserted in BST" << endl;
else
cout << "Failed to add new student record in BST - matching ID exists" << endl;
}
if (choice == 3) {
cout << "Printing student records in ascending order of IDs" << endl;
tree->print();
}
}
system("pause");
}
"BST File(Implementation file)"
#include "bst.h"
using namespace std;
bool bst::insert(string StudentName, int IDNumber) {
class node * n= new node(StudentName,IDNumber);
class node * parent = NULL;
if(root == NULL)
root = n;
else
{
// Need help here
//implement the function here
// you will need to create a new node with given student name and ID
// then traverse the tree (starting at the root) to find the right
// place to insert the node
// if a node with matching ID is found, return false to indicate failure
// if given ID is less than the ID of the node you are inspecting, move
// to the left subtree. If the given ID is greater, move to the right subtree
// end insert
Tags for this Thread
Posting Permissions
- You may not post new threads
- You may not post replies
- You may not post attachments
- You may not edit your posts
-
Forum Rules
|
Click Here to Expand Forum to Full Width
|