二叉树操作

来源:互联网 发布:科密e100如何导出数据 编辑:程序博客网 时间:2024/05/21 17:16



/*二叉树创建于操作类*/#if !defined BITREENODE_H#define BITREENODE_H#include<iostream>typedef struct BiTreeNode{//数据char data;//指向左子树与右子数的指针struct BiTreeNode *lChild,*rChild; }BiTreeNode, *BiTree;class BiTreeFunc{public://创建二叉树void CreatBiTree(BiTree &tree);//读取节点void ReadNode(const BiTree &treeNode);//先序遍历void PreOrder(const BiTree &tree);    //中序遍历void InOrder(const BiTree &tree);//后序遍历void PostOrder(const BiTree &tree);};#endif


/*二叉树类的实现*/#include"BiTreeFunc.h"#include<iostream>using namespace std;//创建二叉树void BiTreeFunc::CreatBiTree(BiTree &tree){//cout<<"Please input the tree node : "<<endl;char nodeData;cin>>nodeData;  if('#' == nodeData){tree = NULL;}else{tree = (BiTree)malloc(sizeof(BiTreeNode));tree->data = nodeData;CreatBiTree(tree->lChild);CreatBiTree(tree->rChild);}}//读取二叉树节点void BiTreeFunc::ReadNode(const BiTree &treeNode){cout<<treeNode->data;}//先序遍历二叉树void BiTreeFunc::PreOrder(const BiTree &biTreeNode){if(NULL != biTreeNode){ReadNode(biTreeNode);PreOrder(biTreeNode->lChild);PreOrder(biTreeNode->rChild);}}//中序遍历二叉树void BiTreeFunc::InOrder(const BiTree &biTreeNode){if(NULL != biTreeNode){PostOrder(biTreeNode->lChild);ReadNode(biTreeNode);PostOrder(biTreeNode->rChild);}}//后序遍历二叉树void BiTreeFunc::PostOrder(const BiTree &biTreeNode){if(NULL != biTreeNode){PostOrder(biTreeNode->lChild);PostOrder(biTreeNode->rChild);ReadNode(biTreeNode);}}



/*类测试*/#include<iostream>#include"BiTreeFunc.h"using namespace std;void main(){BiTreeFunc biTreeTest;BiTree tree;biTreeTest.CreatBiTree(tree);cout<<"先序遍历: ";biTreeTest.PreOrder(tree);cout<<endl;cout<<"中序遍历: ";biTreeTest.InOrder(tree);cout<<endl;cout<<"后序遍历: ";biTreeTest.PostOrder(tree);cout<<endl;system("pause");}





0 0