**** c++ binary parse trees help PLEASE URGENT??

SORRY I TRIED TO INDENT THE CODE BUT IT DIDNT WORK OUT
I am trying to make a binary tree for conversion of postfix to infix. the binary trees class is as follows

WHAT I HAVE TO DO AND WHAT I AN HAVING TROUBLE WITH
1) READ A POSTFIX EXPRESSION FROM A FILE AND MAKE A TREE. I HAVE TO DO THAT BY THE STACK METHOD.

Here is my binary tree class and questions i have:

#ifndef TREENODE_H
#define TREENODE_H

#include"stack.h"
#include<iostream>
#include<fstream>

using namespace std;




template<class type>
class binaryTree
{
struct treeNode
{

type data;
binaryTree<type> *left;
binaryTree<type> *right;

};

treeNode * root;

void inOrder(treeNode *tnode);

void preOrder(treeNode *tnode);

void postOrder(treeNode *tnode);

void destroy(treeNode *&tnode);


public:

binaryTree();

binaryTree(type data);

binaryTree(type data, binaryTree<type> , binaryTree<type>);

bool isEmpty() const;

void inOrder();

void postOrder();

void preOrder();

void destroy();

~binaryTree();

};

template<class type>
binaryTree<type>::binaryTree()
{
root = NULL;
}

template<class type>
binaryTree<type>::binaryTree(type data)
{
root = new treeNode;
root->data = data;
root->left = NULL;
root->right = NULL;
}

template<class type>
binaryTree<type>::binaryTree(type data, binaryTree<type> leftSub, binaryTree<type> rightSub)
{
root = new treeNode;
root->data=data;

root->left=&leftSub;

root->right=&rightSub;
}

template<class type>
bool binaryTree<type>::isEmpty() const
{
return (root==NULL);
}

template<class type>
void binaryTree<type>::inOrder()
{
inOrder(root);

}

template<class type>
void binaryTree<type>::preOrder()
{
preOrder(root);

}

template<class type>
void binaryTree<type>::postOrder()
{
postOrder(root);

}

template<class type>
void binaryTree<type>::inOrder(treeNode *tnode)
{

if(tnode==NULL)
return;

if(tnode->left!=NULL)
inOrder(tnode->left->root);
cout << tnode->data << " ";

if(tnode->right!=NULL)
inOrder(tnode->right->root);

}

template<class type>
void binaryTree<type>::preOrder(treeNode* tnode)
{
if(tnode == NULL)
return;

cout << tnode->data << " ";

if(tnode->left!=NULL)
preOrder(tnode->left->root);

if(tnode->right!=NULL)
preOrder(tnode->right->root);

}

template<class type>
void binaryTree<type>::postOrder(treeNode* tnode)
{
if(tnode == NULL)
return;

if(tnode->left!=NULL)
postOrder(tnode->left->root);

if(tnode->right!=NULL)
postOrder(tnode->right->root);

cout << tnode->data << " ";
}

template<class type>
void binaryTree<type>::destroy()
{
destroy(root);
}

template<class type>
void binaryTree<type>::destroy(treeNode*& tnode)
{
if(tnode == NULL)
return;



if(tnode->left!=NULL)
destroy(tnode->left->root);

if(tnode->right!=NULL)
destroy(tnode->right->root);
delete tnode;
tnode = NULL;
}

template<class type>
binaryTree<type>::~binaryTree()
{
destroy(root);
}

what my problems are now:

1) my destructor and destroy() are still giving problems..
2)inorder and everything else works but for some cases they do not. i think they are the destructor dependent though. they seem to be working when i don't use the destructor and the destroy function. example: something like this always works when i comment out the destructor and destroy..

binaryTree<char> a('a');

binaryTree<char> b('b');

binaryTree<char> c('+',a,b);

binaryTree<char> d('+',b,c);

binaryTree<char> e('*',a,d);

binaryTree<char> f('z',final,d);
f.inOrder();

but when i destroy a tree object and use it later in order seems to give problems.

3)my final question and most important.. how do i store the popped tree in another tree object. for example :
stack<binaryTree> s; // consider the stack has some objects
binaryTree tree;

tree=s.pop() gives a malloc error and run time error.

Please someone i really need help...
Topic archived. No new replies allowed.