-
January 22nd, 2017, 03:35 AM
#1
Errors in code
Can anybody help me in rectifying the error?
Code:
#ifndef TREE_H_INCLUDED
#define TREE_H_INCLUDED
template<typename NODETYPE> class Tree;
template<typename NODETYPE>
class TreeNode
{
friend class Tree<NODETYPE>;
public:
TreeNode(const NODETYPE &d):leftPtr(0), data(d), rightPtr(0)
{
}
NODETYPE getData() const
{
return data;
}
private:
TreeNode<NODETYPE> *leftPtr;
NODETYPE data;
TreeNode<NODETYPE> *rightPtr;
};
#endif // TREE_H_INCLUDED
Code:
#ifndef TREE_H_INCLUDED
#define TREE_H_INCLUDED
#include <iostream>
#include "TreeNode.h"
using namespace std;
template<typename NODETYPE> class Tree
{
public:
Tree();
void insertNode(const NODETYPE &);
void preOrderTraversal() const;
void inOrderTraversal() const;
void postOrderTraversal() const;
private:
TreeNode <NODETYPE> *rootPtr;
void insertNodeHelper(TreeNode<NODETYPE> **, const NODETYPE &);
void preOrderHelper(TreeNode<NODETYPE> *)const;
void inOrderHelper(TreeNode<NODETYPE> *) const;
void postOrderHelper(TreeNode<NODETYPE> *) const;
};
template<typename NODETYPE>
Tree<NODETYPE>::Tree()
{
rootPtr=0;
}
template<typename NODETYPE>
void Tree<NODETYPE>::insertNode(const NODETYPE &value)
{
insertNodeHelper(&rootPtr, value);
}
template<typename NODETYPE>
void insertNodeHelper(TreeNode<NODETYPE> **ptr, const NODETYPE &value)
{
if(*ptr==0)
*ptr=new TreeNode<NODETYPE>(value);
else
{
if(value<(*ptr)->data)
insertNodeHelper(&((*ptr)->leftPtr), value);
else
{
if(value>(*ptr)->data)
insertNodeHelper(&((*ptr)->rightPtr),value);
else
cout<<value<<" dup" <<endl;
}
}
}
template<typename NODETYPE>
void Tree <NODETYPE> :: preOrderTraversal() const
{
preOrderHelper(rootPtr);
}
template<typename NODETYPE>
void Tree <NODETYPE>::preOrderHelper(TreeNode<NODETYPE> *ptr) const
{
if(ptr!=0)
{
cout<<ptr->data<<' ';
preOrderHelper(ptr->leftPtr);
preOrderHelper(ptr->rightPtr);
}
}
template<typename NODETYPE>
void Tree<NODETYPE>::inOrderTraversal() const
{
inOrderHelper(rootPtr);
}
template<typename NODETYPE>
void Tree<NODETYPE>:: inOrderHelper(const <NODETYPE> *ptr) const
{
if(ptr!=0)
{
inOrderHelper(ptr->leftPtr);
cout<<ptr->data;
inOrderHelper(ptr->rightPtr);
}
}
template<typename NODETYPE>
void Tree <NODETYPE>::postOrderTraversal() const
{
postOrderHelper(rootPtr);
}
template<typename NODETYPE>
void Tree <NODETYPE>::postOrderHelper(const <NODETYPE> *ptr) const
{
if(ptr!=0)
{
postOrderHelper(ptr->leftPtr);
postOrderHelper(ptr->rightPtr);
cout<<ptr->data<<' ';
}
}
#endif // TREE_H_INCLUDED
Code:
#include <iostream>
#include <iomanip>
#include "Tree.h"
using namespace std;
int main()
{
Tree<int> intTree;
int intValue;
cout<<"Enter 10 integer values\n";
for(int i=0; i<10; i++)
{
cin>>intValue;
intTree.insertNode(intValue);
}
cout<<"PreOrderTraversal\n";
intTree.preOrderTraversal();
cout<<"InOrderTraversal\n";
intTree.inOrderTraversal();
cout<<"PostOrderTraversal\n";
intTree.postOrderTraversal();
Tree <double> doubleTree;
double doubleValue;
cout<<fixed<<setprecision(1);
cout<<"\n\nEnter 10 double values: ";
for(int j=0; j<10; j++)
{
cin>>doubleValue;
doubleTree.insertNode(intValue);
}
cout<<"PreOrderTraversal\n";
doubleTree.preOrderTraversal();
cout<<"InOrderTraversal\n";
doubleTree.inOrderTraversal();
cout<<"PostOrderTraversal\n";
doubleTree.postOrderTraversal();
cout<<endl;
return 0;
}
It is showing 29 errors and I have tried everything I know?
-
January 22nd, 2017, 05:54 AM
#2
Re: Errors in code
There are various syntax errors. eg
Code:
void insertNodeHelper(TreeNode<NODETYPE> **ptr, const NODETYPE &value)
should be
Code:
void Tree<NODETYPE>::insertNodeHelper(TreeNode<NODETYPE> **ptr, const NODETYPE &value)
and
Code:
void Tree<NODETYPE>:: inOrderHelper(const <NODETYPE> *ptr) const
should be
Code:
void Tree<NODETYPE>:: inOrderHelper(TreeNode<NODETYPE> *ptr) const
etc.
I'm pulled everything together in one file for the sake of testing and the code below compiles with VS 2015.
Code:
#include <iostream>
#include <iomanip>
using namespace std;
template<typename NODETYPE> class Tree;
template<typename NODETYPE>
class TreeNode
{
friend class Tree<NODETYPE>;
public:
TreeNode(const NODETYPE &d) :leftPtr(0), data(d), rightPtr(0)
{
}
NODETYPE getData() const
{
return data;
}
private:
TreeNode<NODETYPE> *leftPtr;
NODETYPE data;
TreeNode<NODETYPE> *rightPtr;
};
template<typename NODETYPE> class Tree
{
public:
Tree();
void insertNode(const NODETYPE &);
void preOrderTraversal() const;
void inOrderTraversal() const;
void postOrderTraversal() const;
private:
TreeNode <NODETYPE> *rootPtr;
void insertNodeHelper(TreeNode<NODETYPE> **, const NODETYPE &);
void preOrderHelper(TreeNode<NODETYPE> *)const;
void inOrderHelper(TreeNode<NODETYPE> *) const;
void postOrderHelper(TreeNode<NODETYPE> *) const;
};
template<typename NODETYPE>
Tree<NODETYPE>::Tree()
{
rootPtr = 0;
}
template<typename NODETYPE>
void Tree<NODETYPE>::insertNode(const NODETYPE &value)
{
insertNodeHelper(&rootPtr, value);
}
template<typename NODETYPE>
void Tree<NODETYPE>::insertNodeHelper(TreeNode<NODETYPE> **ptr, const NODETYPE &value)
{
if (*ptr == 0)
*ptr = new TreeNode<NODETYPE>(value);
else
{
if (value<(*ptr)->data)
insertNodeHelper(&((*ptr)->leftPtr), value);
else
{
if (value>(*ptr)->data)
insertNodeHelper(&((*ptr)->rightPtr), value);
else
cout << value << " dup" << endl;
}
}
}
template<typename NODETYPE>
void Tree <NODETYPE> ::preOrderTraversal() const
{
preOrderHelper(rootPtr);
}
template<typename NODETYPE>
void Tree <NODETYPE>::preOrderHelper(TreeNode<NODETYPE> *ptr) const
{
if (ptr != 0)
{
cout << ptr->data << ' ';
preOrderHelper(ptr->leftPtr);
preOrderHelper(ptr->rightPtr);
}
}
template<typename NODETYPE>
void Tree<NODETYPE>::inOrderTraversal() const
{
inOrderHelper(rootPtr);
}
template<typename NODETYPE>
void Tree<NODETYPE>::inOrderHelper(TreeNode<NODETYPE> *ptr) const
{
if (ptr != 0)
{
inOrderHelper(ptr->leftPtr);
cout << ptr->data;
inOrderHelper(ptr->rightPtr);
}
}
template<typename NODETYPE>
void Tree <NODETYPE>::postOrderTraversal() const
{
postOrderHelper(rootPtr);
}
template<typename NODETYPE>
void Tree <NODETYPE>::postOrderHelper(TreeNode <NODETYPE> *ptr) const
{
if (ptr != 0)
{
postOrderHelper(ptr->leftPtr);
postOrderHelper(ptr->rightPtr);
cout << ptr->data << ' ';
}
}
int main()
{
Tree<int> intTree;
int intValue;
cout << "Enter 10 integer values\n";
for (int i = 0; i<10; i++)
{
cin >> intValue;
intTree.insertNode(intValue);
}
cout << "PreOrderTraversal\n";
intTree.preOrderTraversal();
cout << "InOrderTraversal\n";
intTree.inOrderTraversal();
cout << "PostOrderTraversal\n";
intTree.postOrderTraversal();
Tree <double> doubleTree;
double doubleValue;
cout << fixed << setprecision(1);
cout << "\n\nEnter 10 double values: ";
for (int j = 0; j<10; j++)
{
cin >> doubleValue;
doubleTree.insertNode(intValue);
}
cout << "PreOrderTraversal\n";
doubleTree.preOrderTraversal();
cout << "InOrderTraversal\n";
doubleTree.inOrderTraversal();
cout << "PostOrderTraversal\n";
doubleTree.postOrderTraversal();
cout << endl;
return 0;
}
All advice is offered in good faith only. All my code is tested (unless stated explicitly otherwise) with the latest version of Microsoft Visual Studio (using the supported features of the latest standard) and is offered as examples only - not as production quality. I cannot offer advice regarding any other c/c++ compiler/IDE or incompatibilities with VS. You are ultimately responsible for the effects of your programs and the integrity of the machines they run on. Anything I post, code snippets, advice, etc is licensed as Public Domain https://creativecommons.org/publicdomain/zero/1.0/ and can be used without reference or acknowledgement. Also note that I only provide advice and guidance via the forums - and not via private messages!
C++23 Compiler: Microsoft VS2022 (17.6.5)
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
|