C++ BST 顺序问题

C++ BST Inorder Trouble

我在实现中序遍历时遇到了问题。这是我的代码。这行不通吗?由于某种原因,我遇到了段错误。请帮忙

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); 
}
}