学习数据结构基础,如有错误,请指正。
/************************************************************************
数据结构:二叉树的实现,创建、先序、中序、后序遍历(递归实现)
************************************************************************/
#ifndef __BITTREE_H__
#define __BITTREE_H__
typedef char ElemType;
struct BitNode{
ElemType data;
BitNode *lChild;
BitNode *rChild;
};
class BitTree{
public:
BitTree();
~BitTree();
void creatBitTree(BitNode* &tree);
void preOrderTraverseTree(BitNode* tree);
void inOrderTraverseTree(BitNode* tree);
void posOrderTraverseTree(BitNode* tree);
void visit(ElemType e);
BitNode *bitTree;
};
#endif // __BITTREE_H__
#include "BitTree.h"
#include <iostream>
using std::cout;
using std::cin;
using std::endl;
BitTree::BitTree()
{
this->bitTree = NULL;
}
BitTree::~BitTree()
{
}
void BitTree::creatBitTree(BitNode* &tree)
{
// 先序、递归建树
cout<<"enter a node char:";
char ch = NULL;
cin>>ch;
if ( 'q' == ch )
{
tree = NULL;
}
else{
tree = new BitNode();
tree->data = ch;
this->creatBitTree( tree->lChild );
this->creatBitTree( tree->rChild );
}
}
void BitTree::preOrderTraverseTree(BitNode* tree)
{
if (tree)
{
visit(tree->data);
preOrderTraverseTree(tree->lChild);
preOrderTraverseTree(tree->rChild);
}
}
void BitTree::inOrderTraverseTree(BitNode* tree)
{
if (tree)
{
preOrderTraverseTree(tree->lChild);
visit(tree->data);
preOrderTraverseTree(tree->rChild);
}
}
void BitTree::posOrderTraverseTree(BitNode* tree)
{
if (tree)
{
preOrderTraverseTree(tree->lChild);
preOrderTraverseTree(tree->rChild);
visit(tree->data);
}
}
void BitTree::visit(ElemType e)
{
cout<<e;
}
int main()
{
BitTree *aTree = new BitTree();
aTree->creatBitTree(aTree->bitTree);
cout<<"preOrder traverse Tree:"<<endl;
aTree->preOrderTraverseTree(aTree->bitTree);
cout<<endl;
cout<<"inOrder traverse Tree:"<<endl;
aTree->inOrderTraverseTree(aTree->bitTree);
cout<<endl;
cout<<"posOrder traverse Tree:"<<endl;
aTree->posOrderTraverseTree(aTree->bitTree);
cout<<endl;
getchar();
return 0;
}
版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。