代码
#pragma once
typedef struct Node
{
int data;
Node * leftChild;
Node * rightChild;
}BiTreeNode;
class BiTree
{
private:
void insert(Node *&root,Node *&d)
{
if(root == NULL) root = d;
else if(d->data < root->data)
insert(root->leftChild,d);
else
insert(root->rightChild,d);
}
void inorder(BiTreeNode *p);
void preorder(BiTreeNode *p);
void postorder(BiTreeNode *p);
public:
BiTreeNode * root;
BiTree(void);
~BiTree(void);
void add(int value)//add element to tree
{
BiTreeNode *n = new BiTreeNode;
n->data = value;
n->leftChild = NULL;
n->rightChild = NULL;
insert(root,n);
}
void inorderTravel();
void preorderTravel();
void postorderTravel();
};
代码
#include <iostream>
#include "BiTree.h"
using namespace std;
BiTree::BiTree(void)
{
root = NULL;
}
BiTree::~BiTree(void)
{
}
//中序遍历
void BiTree::inorderTravel()
{
inorder (root);
}
//前序遍历
void BiTree::preorderTravel ()
{
preorder(root);
}
//后序遍历
void BiTree::postorderTravel ()
{
postorder(root);
}
void BiTree::inorder (BiTreeNode *p)
{
if(p!=NULL)
{
inorder(p->leftChild );
cout<<p->data <<" ";
inorder(p->rightChild);
}
}
void BiTree::preorder(BiTreeNode *p)
{
if(p!=NULL)
{
cout<<p->data <<" ";
preorder(p->leftChild );
preorder(p->rightChild );
}
}
void BiTree::postorder (BiTreeNode *p)
{
if(p!=NULL)
{
postorder(p->leftChild);
postorder(p->rightChild);
cout<<p->data <<" ";
}
}

浙公网安备 33010602011771号