#include <iostream>
using namespace std;
class Node
{
public:
int data;
Node * leftChild;
Node * rightChild;
};
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(Node *p);
void preorder(Node *p);
void postorder(Node *p);
public:
Node * root;
BiTree();
~BiTree();
void add(int value)//add element to tree
{
Node *n = new Node;
n->data = value;
n->leftChild = NULL;
n->rightChild = NULL;
insert(root,n);
}
void inorderTravel();
void preorderTravel();
void postorderTravel();
};
BiTree::BiTree()
{
root = NULL;
}
BiTree::~BiTree()
{
}
//中序遍历
void BiTree::inorderTravel()
{
inorder (root);
}
//前序遍历
void BiTree::preorderTravel ()
{
preorder(root);
}
//后序遍历
void BiTree::postorderTravel ()
{
postorder(root);
}
void BiTree::inorder (Node *p)
{
if(p!=NULL)
{
inorder(p->leftChild );
cout<<p->data <<" ";
inorder(p->rightChild);
}
}
void BiTree::preorder(Node *p)
{
if(p!=NULL)
{
cout<<p->data <<" ";
preorder(p->leftChild );
preorder(p->rightChild );
}
}
void BiTree::postorder (Node *p)
{
if(p!=NULL)
{
postorder(p->leftChild);
postorder(p->rightChild);
cout<<p->data <<" ";
}
}
int main()
{
BiTree bt;
int i = 10;
while (i--)
bt.add(i);
bt.inorderTravel();
cout << endl;
bt.preorderTravel();
cout << endl;
bt.postorderTravel();
cout << endl;
}
二叉树实现
最新推荐文章于 2024-09-19 16:35:54 发布