liuyawen44
liuyawen44
采纳率37.5%
2015-11-04 16:06

树的括号表示法怎么写

#include
#include
#include
using namespace std;
struct treenode
{
char data;
treenode firstchild;
treenode *nextsibling;
};
treenode * creat_tree(char
&a)
{ if((*a)==',')
{
a++;
}
if((*a)=='\0')
return NULL;
if((*a)==')')
{
a++;
return NULL;
}
if((*a)=='(')
{
a++;
}
treenode t=new treenode();
t->data=
(a++);
t->firstchild=creat_tree(a);
t->nextsibling=creat_tree(a);
return t;
}
void show_tree(treenode *t)
{ //cout<<"123";
if(t==NULL)
return;
cout<data;
for(treenode *p=t->firstchild;p!=NULL;p=p->nextsibling)
{
show_tree(p);
}
}
int main()
{ //char ch[100];
char *a;//[100];
gets(a);
// puts(a);
treenode *t=creat_tree(a);
show_tree(t);
}

我写了一个,但又明显错误,希望大神能帮我改进。。

  • 点赞
  • 写回答
  • 关注问题
  • 收藏
  • 复制链接分享
  • 邀请回答

1条回答

  • caozhy 从今以后生命中的每一秒都属于我爱的人 6年前
     #include<stdio.h>
    #include<stdlib.h>
    #include<memory.h>
    
    typedef struct BiTNode {
        char data;
        struct BiTNode *lchild;
        struct BiTNode *rchild; 
    } *BiTree;
    
    BiTree CreateBiTree(BiTree T){
        char ch;
        scanf("%c",&ch);
        if (ch=='#'){ 
            return NULL; 
        }else {
            T = (BiTree)malloc(sizeof(struct BiTNode)) ;     
            T->data = ch;
            T->lchild=CreateBiTree(T->lchild);   
            T->rchild=CreateBiTree(T->rchild);    
            return T;
        }
    }
    
    
    void PreOrder(BiTree &T){
        if(T){                      
            printf("%c ",T->data);  
            PreOrder(T->lchild);   
            PreOrder(T->rchild);    
        }
    }
    
    void InOrder(BiTree &T){
        if(T){                     
            InOrder(T->lchild); 
            printf("%c ",T->data);  
            InOrder(T->rchild); 
        }
    }
    
    void PostOrder(BiTree &T){
        if(T){                     
            PostOrder(T->lchild);
            PostOrder(T->rchild);    
            printf("%c ",T->data);
    
        }
    }
    
    void ShowBiTree(BiTree  &bt)
    {
        if (bt!=NULL){
            printf("%c",bt->data);
            if (bt->rchild!=NULL||bt->lchild!=NULL){
                printf("(");
                ShowBiTree(bt->lchild);
                if (bt->rchild!=NULL){
                    printf(",");
                }
                ShowBiTree(bt->rchild);
                printf(")");
            }
        }
    }
    
    int main()
    {
        printf("请依次输入字符: \n");
        BiTree T;
        T = CreateBiTree(T);
        printf("先序遍历: \n");
        PreOrder(T);
        printf("\n中序遍历: \n");
        InOrder(T);
        printf("\n后序遍历: \n");
        PostOrder(T);
        printf("\n用括号表示法输出二叉树:\n");
        ShowBiTree(T);
        printf("\n");
        system("pause");
        return 0;
    }
    
    
    点赞 3 评论 复制链接分享

相关推荐