tamparuli98
10-11-2006, 08:48 AM
This is my exercise question ... I really need help from anybody who knows about this matter......
Here is the lab question....
Write the program in C++ only.
Write a program to read the content of a provided file (WXGA6106.txt) into a binary tree. After reading, extract only the left subtree information (exclude the root node) and put into a new binary tree. Write the new binary tree content into a file (Data.txt). Use the preorder, inorder and postorder to print out the content of the new binary tree.
WXGA6106.txt
60 40 50 30 10 70 80 20
Here is my coding in C++....the coding I have done only can perform reading from the WXGA6106.txt
//binarytreeviva.cpp
#include <iostream>
#include "BinaryTreeViva.h"
#include <string>
#include <fstream>
using namespace std;
main() {
T.read();
int item;
// ifstream infile;
// cout<<"Reading from the file"<<endl;
// infile.open("WXGA6106.txt");
//infile>>item;
//cout<<item<<endl;
// infile>>item;
// cout<<item<<endl;
// infile>>item;
// cout<<item<<endl;
// infile>>item;
// cout<<item<<endl;
// infile>>item;
// cout<<item<<endl;
// infile>>item;
// cout<<item<<endl;
// infile>>item;
// cout<<item<<endl;
// infile>>item;
// cout<<item<<endl;
// infile>>item;
// infile.close();
// cout<<"preorder"<<endl;
// cout<<"inorder"<<endl;
// cout<<"postoder"<<endl;
// T.DisplayOrder(1);
// cout<<endl;
// T.DisplayOrder(2);
// cout<<endl;
// T.DisplayOrder(3);
// cout<<endl;
return 0;
}
//BinaryTreeViva.h
#ifndef BinaryTreeViva_H
#define BinaryTreeViva_H
#include <iostream>
#include <string>
#include <fstream>
using namespace std;
class vivaTree {
private:
struct TreeNode{
int item;
TreeNode *leftPtr;
TreeNode *rightPtr;
};
public:
vivaTree();
void insertItem(int);
void insert(TreeNode * &, int);
void DisplayOrder(int);
void inorder(TreeNode*);
void postorder(TreeNode*);
void preorder(TreeNode*);
void read();
TreeNode *root;
}T;
vivaTree::vivaTree() {
root=NULL;
}
void vivaTree::insert(TreeNode *&Node, int item){
if (Node==NULL) {
Node=new TreeNode;
if(Node==NULL)
cout<<"Cannot allocate memory";
else
{
Node->leftPtr=NULL;
Node->rightPtr=NULL;
Node->item=item;
}
}
else if (item < Node->item)
insert(Node->leftPtr, item);
else
insert(Node->rightPtr, item);
}
void vivaTree::DisplayOrder(int item){
switch (item){
case 1:inorder(root); break;
case 2:postorder(root); break;
case 3:preorder(root);
}
}
void vivaTree::inorder(TreeNode *ptr){
if(ptr!=NULL){
inorder(ptr->leftPtr);
cout<<ptr->item;
inorder(ptr->rightPtr);
}
}
void vivaTree::postorder(TreeNode *ptr){
if(ptr!=NULL){
postorder(ptr->leftPtr);
postorder(ptr->rightPtr);
cout<<ptr->item;
}
}
void vivaTree::preorder(TreeNode *ptr){
if(ptr!=NULL){
cout<<ptr->item;
preorder(ptr->leftPtr);
preorder(ptr->rightPtr);
}
}
void vivaTree::read() {
int item;
ifstream infile;
cout<<"Reading from the file"<<endl;
infile.open("WXGA6106.txt");
infile>>item;
cout<<item<<endl;
infile>>item;
cout<<item<<endl;
infile>>item;
cout<<item<<endl;
infile>>item;
cout<<item<<endl;
infile>>item;
cout<<item<<endl;
infile>>item;
cout<<item<<endl;
infile>>item;
cout<<item<<endl;
infile>>item;
cout<<item<<endl;
infile>>item;
infile.close();
}
#endif
//I still cannot perform the other task as requested in the question....... I //really need help from anybody who knows about this......Thank You very //much.....
Here is the lab question....
Write the program in C++ only.
Write a program to read the content of a provided file (WXGA6106.txt) into a binary tree. After reading, extract only the left subtree information (exclude the root node) and put into a new binary tree. Write the new binary tree content into a file (Data.txt). Use the preorder, inorder and postorder to print out the content of the new binary tree.
WXGA6106.txt
60 40 50 30 10 70 80 20
Here is my coding in C++....the coding I have done only can perform reading from the WXGA6106.txt
//binarytreeviva.cpp
#include <iostream>
#include "BinaryTreeViva.h"
#include <string>
#include <fstream>
using namespace std;
main() {
T.read();
int item;
// ifstream infile;
// cout<<"Reading from the file"<<endl;
// infile.open("WXGA6106.txt");
//infile>>item;
//cout<<item<<endl;
// infile>>item;
// cout<<item<<endl;
// infile>>item;
// cout<<item<<endl;
// infile>>item;
// cout<<item<<endl;
// infile>>item;
// cout<<item<<endl;
// infile>>item;
// cout<<item<<endl;
// infile>>item;
// cout<<item<<endl;
// infile>>item;
// cout<<item<<endl;
// infile>>item;
// infile.close();
// cout<<"preorder"<<endl;
// cout<<"inorder"<<endl;
// cout<<"postoder"<<endl;
// T.DisplayOrder(1);
// cout<<endl;
// T.DisplayOrder(2);
// cout<<endl;
// T.DisplayOrder(3);
// cout<<endl;
return 0;
}
//BinaryTreeViva.h
#ifndef BinaryTreeViva_H
#define BinaryTreeViva_H
#include <iostream>
#include <string>
#include <fstream>
using namespace std;
class vivaTree {
private:
struct TreeNode{
int item;
TreeNode *leftPtr;
TreeNode *rightPtr;
};
public:
vivaTree();
void insertItem(int);
void insert(TreeNode * &, int);
void DisplayOrder(int);
void inorder(TreeNode*);
void postorder(TreeNode*);
void preorder(TreeNode*);
void read();
TreeNode *root;
}T;
vivaTree::vivaTree() {
root=NULL;
}
void vivaTree::insert(TreeNode *&Node, int item){
if (Node==NULL) {
Node=new TreeNode;
if(Node==NULL)
cout<<"Cannot allocate memory";
else
{
Node->leftPtr=NULL;
Node->rightPtr=NULL;
Node->item=item;
}
}
else if (item < Node->item)
insert(Node->leftPtr, item);
else
insert(Node->rightPtr, item);
}
void vivaTree::DisplayOrder(int item){
switch (item){
case 1:inorder(root); break;
case 2:postorder(root); break;
case 3:preorder(root);
}
}
void vivaTree::inorder(TreeNode *ptr){
if(ptr!=NULL){
inorder(ptr->leftPtr);
cout<<ptr->item;
inorder(ptr->rightPtr);
}
}
void vivaTree::postorder(TreeNode *ptr){
if(ptr!=NULL){
postorder(ptr->leftPtr);
postorder(ptr->rightPtr);
cout<<ptr->item;
}
}
void vivaTree::preorder(TreeNode *ptr){
if(ptr!=NULL){
cout<<ptr->item;
preorder(ptr->leftPtr);
preorder(ptr->rightPtr);
}
}
void vivaTree::read() {
int item;
ifstream infile;
cout<<"Reading from the file"<<endl;
infile.open("WXGA6106.txt");
infile>>item;
cout<<item<<endl;
infile>>item;
cout<<item<<endl;
infile>>item;
cout<<item<<endl;
infile>>item;
cout<<item<<endl;
infile>>item;
cout<<item<<endl;
infile>>item;
cout<<item<<endl;
infile>>item;
cout<<item<<endl;
infile>>item;
cout<<item<<endl;
infile>>item;
infile.close();
}
#endif
//I still cannot perform the other task as requested in the question....... I //really need help from anybody who knows about this......Thank You very //much.....