二叉树的建立,以及递归前中后序遍历二叉树

来源:互联网 发布:js set array 转换 编辑:程序博客网 时间:2024/05/29 17:35
测试用例如图:
#include <stdio.h>#include <stdlib.h>#define TREE "+*E*D/CAB"typedef int dt;typedef struct NODE {        dt          data;        struct NODE *lp;        struct NODE *rp;    } Node, *Nodep;void first(Nodep ptr) {    if (ptr) {        printf("%c", ptr->data);        first(ptr->lp);        first(ptr->rp);    }}void mid(Nodep ptr) {    if (ptr) {        mid(ptr->lp);        printf("%c",ptr->data);        mid(ptr->rp);    }}void last(Nodep ptr) {    if (ptr) {        last(ptr->lp);        last(ptr->rp);        printf("%c", ptr->data);            }    }int main() {    Nodep   root = NULL;    Nodep   tnode = (Nodep)malloc(sizeof(Node));    Nodep   pl = NULL;    Nodep   pr = NULL;    char s[] = TREE;        //建立二叉树    root = tnode;    tnode->data = s[0];    tnode->lp = NULL;    tnode->rp = NULL;        char *p = s + 1;    while(*p) {        //printf("%c", *p++);        pl = (Nodep)malloc(sizeof(Node));        pl->data = *p++;        pl->lp = NULL;        pl->rp = NULL;                pr = (Nodep)malloc(sizeof(Node));        pr->data = *p++;        pr->lp = NULL;        pr->rp = NULL;                tnode->lp = pl;        tnode->rp = pr;        tnode = tnode->lp;    }        //test    puts("Middle:");    mid(root);    puts("");        puts("First:");    first(root);    puts("");        puts("Last:");    last(root);    puts("");    puts("");        return 0;}