У меня проблемы с реализацией обхода Inorder. Это мой код Разве это не сработает? По какой-то причине я получаю ошибку сегмента. Пожалуйста помоги
BSTree.h
class BSTree {
public:
....
// void traverseInorder(Node* root);
private:
Node * root;
};
BSTree.cpp
void BSTree::inOrderPrint() {
root->traverseInorder(root);
}
node.h
class Node {
public:
void traverseInorder(Node* root);
// void printInOrder(Node* root);
Node* returnLeft(Node* root);
Node* returnRight(Node* root);
void printC();
private:
Customer c;
Node* left;
Node* right;
};
node.cpp
void Node::traverseInorder(Node* root){
if(root==NULL){
return;
}
if(root->left!= NULL){
traverseInorder(root->left);
}
printC();
if(right != NULL){
traverseInorder(root->right);
}
}
void Node::printC(){
cout<<c;
}
и мой << перегружен
ostream& operator<<(ostream & os, Customer & c) {
os << c.getLastName() << ", " << c.getInitial() << ". " << "(" << c.getAccountBalance() << ")";
return os;
}
void Node::traverseInorder(Node* root){
if(root==NULL){
return;
}
if(root->left!= NULL){
root->left->traverseInorder(root->left); //call traverse function on root->left
}
printC();
if(right != NULL){ // it should be root->right here
root->right->traverseInorder(root->right);
}
}
Других решений пока нет …