码迷,mamicode.com
首页 > 其他好文 > 详细

树的创建

时间:2019-04-27 19:41:00      阅读:141      评论:0      收藏:0      [点我收藏+]

标签:info   ios   struct   cas   fine   inf   img   http   using   

1.代码

#include<iostream>
#define Maxsize 10000
using namespace std;
typedef char ElemType;
typedef struct node
{
    ElemType data;
    struct node *lchild;
    struct node *rchild;
}BTNode;
void CreateBtree(BTNode *&b,char *str);//创建二叉树 
void PreOrder(BTNode *b);//先序遍历输出二叉树
void InOrder(BTNode *b);//中序遍历输出二叉树 
void PostOrder(BTNode *b);//后序遍历输出二叉树
void DestroyBtree(BTNode *&b);//销毁二叉树 
int main()
{
    BTNode *b;
    char str[Maxsize];
    cin>>str;
    CreateBtree(b,str);
    cout<<"先序遍历:";
    PreOrder(b);
    cout<<endl;
    cout<<"中序遍历:";
    InOrder(b);
    cout<<endl;
    cout<<"后序遍历:";
    PostOrder(b);
    DestroyBtree(b);
    return 0; 
}
void CreateBtree(BTNode *&b,char *str)//创建二叉树 
{
    BTNode *St[Maxsize],*p;
    int k,j=0,top=-1;
    char ch;
    b=NULL;
    ch=str[j];
    while(ch!='\0')
    {
        switch(ch)
        {
            case '(':top++;St[top]=p;k=1;break;
            case ')':top--;break;
            case ',':k=2;break;
            default:p=new BTNode;
            p->data=ch;
            p->lchild=p->rchild=NULL;
            if(b==NULL)
               b=p;
            else
            {
                switch(k)
                {
                    case 1:St[top]->lchild=p;break;
                    case 2:St[top]->rchild=p;break;
                 } 
            }
        }
        j++;
        ch=str[j];
    }
 } 
 void PreOrder(BTNode *b)//先序遍历输出二叉树
 {
    if(b!=NULL)
    {
        cout<<b->data;
        PreOrder(b->lchild);
        PreOrder(b->rchild);
     }
 }
void InOrder(BTNode *b)//中序遍历输出二叉树 
{
    if(b!=NULL)
    {
        InOrder(b->lchild);
        cout<<b->data;
        InOrder(b->rchild);
     }
 } 
 void PostOrder(BTNode *b)//后序遍历输出二叉树
 {
    if(b!=NULL)
    {
        PostOrder(b->lchild);
        PostOrder(b->rchild);
        cout<<b->data;
     }
 }
 void DestroyBtree(BTNode *&b)//销毁二叉树 
 {
    if(b!=NULL)
    {
     DestroyBtree(b->lchild);
     DestroyBtree(b->rchild);
     delete(b);
     }
 }

2.运行结果截图

技术图片

树的创建

标签:info   ios   struct   cas   fine   inf   img   http   using   

原文地址:https://www.cnblogs.com/zhongguoyidong/p/10779678.html

(0)
(0)
   
举报
评论 一句话评论(0
登录后才能评论!
© 2014 mamicode.com 版权所有  联系我们:gaon5@hotmail.com
迷上了代码!