Logo Questions Linux Laravel Mysql Ubuntu Git Menu
 

Identifier not found

Tags:

c++

class

tree

So for my assignment, I am supposed to implement a Node class that just contains data and pointers to its two siblings and a BinaryTree that reads in these Nodes and creates a binary tree out of them. My problem is pointing to the root of the Tree does not seem to work. Any help you can provide would be appreciated!

Note: The error is found a few lines into the addNode method in the BinaryTree.cpp file which can be found at the end of the question. Also, I am not able to access the value of size either, so I believe this is some sort of weird scope issues I cannot resolve. I also cannot use the "this" keyword in the addNode function.

I am also not allowed to use structs, per my homeworks' instruction.

Node.H

#include <iomanip>

using namespace std;

class Node
{

    public:
      int data;
      Node* leftChild;
      Node* rightChild;
      Node(int data, Node* leftChild, Node* rightChild);

};

Node.cpp

#include <iomanip>
#include <iostream>
#include "Node.h"

using namespace std;

Node::Node(int data, Node* leftChild, Node* rightChild)
{
    this->data = data;
    this->leftChild = leftChild;
    this->rightChild = rightChild;
}

BinaryTree.H

#include <iomanip>
#include "Node.h"

using namespace std;

class Tree
{

public:
    Tree(int data);
    void addNode(int data);
    void inOrder(Node* N);

protected:
    Node* root;
    int size;
    int data;

private:
    int printNode(Node* N);

};

BinaryTree.cpp

#include <iostream>
#include <iomanip>
#include "BinaryTree.h"

using namespace std;

//Tree constructor. Sets the values of data, size, and root. 

Tree::Tree(int data)
{
    this->data = data;
    this->size = 0;
    this->root = new Node(data, NULL, NULL);
}

//Adds a node to the current Tree.
void addNode(int data)
{

    Node* tempNode = new Node(data, NULL, NULL);
    Node* current = root; //THIS IS THE ERROR LINE.

    while(current!=NULL)
    {
        //If the data we are trying to add is already in the Tree
        if(current->data == tempNode->data)
        {
            cout << "Data already in the Tree.";
        }

        //If the data for the new node is larger than the old
        else if(current->data < tempNode->data)
        {
            //See if the right child is null. If so, add the tree node there.
            if(current->rightChild == NULL)
            {
                current->rightChild = tempNode;

                return;
            }

            //Otherwise, traverse down the right tree.
            else
            {
                current = current->rightChild;
            }
        }

        //The data is smaller than the current node
        else
        {
            //See if the left child is null. If so, add the tree node there.
            if(current->leftChild == NULL)
            {
                current->leftChild = tempNode;
                return;
            }

            //Otherwise, traverse down the left tree
            else
            {
                current = current->leftChild;
            }
        }//End of leftChild Else

    }//End of while

}//End of addNode
like image 663
jtrevag Avatar asked Mar 26 '26 04:03

jtrevag


1 Answers

void addNode(int data)

should be:

void Tree::addNode(int data)

as it is a member function of class Tree

like image 64
codaddict Avatar answered Mar 27 '26 17:03

codaddict



Donate For Us

If you love us? You can donate to us via Paypal or buy me a coffee so we can maintain and grow! Thank you!