ADT—二叉树

Posted on 2010-03-31 10:35  625747  阅读(757)  评论(0)    收藏  举报

 

代码
#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 <<" ";
}
}