二叉树的创建

来源:互联网 发布:稳定网络的软件 编辑:程序博客网 时间:2024/05/02 04:24
/************************************************************************* Create Date                   :2014/12/10* Author                        :zhuang_569 * Description                   :二叉树的创建*************************************************************************/#include "iostream"using namespace std;typedef char ELEM_TYPE;typedef structBiTNode{    ELEM_TYPEdata;    struct BiTNode *lchild;    struct BiTNode *rchild;}BiTNode,*pBiTNode;//函数声明pBiTNode CreateBeTree(void);void PreOrderTraverse(pBiTNode pRoot);void InOrderTraverse(pBiTNode pRoot);void PostOrderTraverse(pBiTNode pRoot);int main(void){pBiTNode pBeTreeRoot;pBeTreeRoot = CreateBeTree();//创建二叉树根节点cout<<"二叉树先序输出:";PreOrderTraverse(pBeTreeRoot);cout<<"\n"<<"二叉树中序输出:";InOrderTraverse(pBeTreeRoot);cout<<"\n"<<"二叉树后序输出:";PostOrderTraverse(pBeTreeRoot);return 0;}//利用先序遍历建立二叉树pBiTNode CreateBeTree(void){pBiTNode pRoot;ELEM_TYPE ch;cin >> ch;if('@' == ch){pRoot = NULL;}else{pRoot = new BiTNode;//为新的节点分配内存空间pRoot->data = ch;pRoot->lchild = CreateBeTree();pRoot->rchild = CreateBeTree();}return pRoot;//返回根节点的地址}//先序遍历二叉树void PreOrderTraverse(pBiTNode pRoot){if(NULL != pRoot){ cout << pRoot->data;PreOrderTraverse(pRoot->lchild);PreOrderTraverse(pRoot->rchild);}}//中序遍历二叉树void InOrderTraverse(pBiTNode pRoot){if(NULL != pRoot){InOrderTraverse(pRoot->lchild);cout << pRoot->data;InOrderTraverse(pRoot->rchild);}}//后序遍历二叉树void PostOrderTraverse(pBiTNode pRoot){if(NULL != pRoot){PostOrderTraverse(pRoot->lchild);PostOrderTraverse(pRoot->rchild);cout << pRoot->data;}}

树:



测试结果:





0 0
原创粉丝点击