#ifndef DL_H
#define DL_H
#define null 0
#include <iostream>
using namespace std;
struct BinTreeNode
{
char * data;
BinTreeNode *leftchild , *rightchild;
BinTreeNode(){ leftchild = null; rightchild = null; }
BinTreeNode( char * str ,BinTreeNode *leftchild = null , BinTreeNode *rightchild = null)
{
data = (char *)calloc(strlen(str) + 1 , sizeof(char));
strcpy(data , str);
this->leftchild = leftchild;
this->rightchild;
}
};
class BinTree
{
private:
BinTreeNode *root;
public:
BinTree();
BinTree(BinTreeNode *&root);
//~BinTree();
bool Create(BinTreeNode *&root);
bool PreOrder(BinTreeNode *&root);
bool PostOrder(BinTreeNode *root);
bool InOrder(BinTreeNode *root);
int Size();
int Height();
int CountOfNode();
};
#endif
#include "dl.h"
BinTree::BinTree()
{
root = null;
}
BinTree::BinTree(BinTreeNode *&root)
{
Create(root);
}
bool BinTree::Create(BinTreeNode *&root)
{
char *data = (char *)calloc(128 , sizeof(char));
cin>>data;
if(strcmp(data , "#") == 0) return true;
root = new BinTreeNode();
root->data = (char *)calloc(128 , sizeof(char));
strcpy(root->data , data);
free(data);
data = null;
Create(root->leftchild);
Create(root->rightchild);
return true;
}
bool BinTree::PreOrder(BinTreeNode *&root)
{
if(root == null )
return true;
else{
cout<<root->data<<endl;
PreOrder(root->leftchild);
PreOrder(root->rightchild);
}
}
#include"dl.h"
void main()
{
BinTreeNode *treenode= new BinTreeNode();
BinTree bt(treenode);
bt.PreOrder(treenode);
system("pause");
}