二叉树的前中后遍历和建立C++

2020-10-16  本文已影响0人  优劣在于己

代码储存...(有空再解释...)
样例
输入:abc##d##efg###h##
输出:
abcdefgh
cbdagfeh
cdbgfhea

#include<iostream>
#include<cstdlib>
using namespace std;
typedef struct node{
    char data;
    struct node *lchild,*rchild;
}Node,*tree;
void createtree(tree *t){//建立
    char ch;
    cin>>ch;
    if(ch=='#')*t=NULL;
    else{
        *t=(Node *)malloc(sizeof(Node));
        (*t)->data=ch;
        createtree(&(*t)->lchild);
        createtree(&(*t)->rchild);
    }
}
void ptree(tree t){//前序
    if(t==NULL)return;
    cout<<t->data;
    ptree(t->lchild);
    ptree(t->rchild);
}
void mtree(tree t){//中序
    if(t==NULL)return;;
    mtree(t->lchild);
    cout<<t->data;
    mtree(t->rchild);
}
void ltree(tree t){//后序
    if(t==NULL)return;
    ltree(t->lchild);
    ltree(t->rchild);
    cout<<t->data;
}
int main(){
    tree T;
    createtree(&T);
    ptree(T);
    cout<<endl;
    mtree(T);
    cout<<endl;
    ltree(T);
    cout<<endl;
    return 0;
}


上一篇下一篇

猜你喜欢

热点阅读