二叉树的基本操作

来源:互联网 发布:外国人的审美 知乎 编辑:程序博客网 时间:2024/05/16 17:36

(1)二叉树的创建

(2)对进行先,中,后序遍历

// Bitree.cpp: 定义控制台应用程序的入口点。//#include<iostream>#include<stdio.h>using namespace std;typedef char TElemType;enum Status { OK = 1,ERROR = 0 };//枚举类型typedef struct BiTNode{//结点类型    TElemType data;    struct BiTNode * lchild, * rchild;}* BiTree,BiTNode;Status CreateBiTree(BiTree &T) {//创建二叉树    char ch;    scanf_s("%c",& ch);//输入数据    getchar();//取回车    if (ch == ' ')T = NULL;    else {        if (!(T = (BiTNode*)malloc(sizeof(BiTNode))))exit (OVERFLOW);//开辟空间        T->data = ch;        CreateBiTree(T->lchild);//递归创建左子树        CreateBiTree(T->rchild);//递归创建右子树    }    return OK;}Status PreOrderTraverse(BiTree T) {    if (T) {        if(printf("%c ", T->data))//打印结点数据        if (PreOrderTraverse(T->lchild))//递归遍历左子树            if (PreOrderTraverse(T->rchild))return OK;//递归遍历右子树        return ERROR;    }    else return OK;}Status InOrderTraverse(BiTree T) {    if (T) {        if (PreOrderTraverse(T->lchild))            if(printf("%c ", T->data))                if (PreOrderTraverse(T->rchild))return OK;            return ERROR;    }    else return OK;}Status PostOrderTraverse(BiTree T) {    if (T) {        if (PreOrderTraverse(T->lchild))             if (PreOrderTraverse(T->rchild))                if (printf("%c ", T->data))return OK;            return ERROR;    }    else return OK;}int main(){    BiTree T;    CreateBiTree(T);    PreOrderTraverse(T);    printf("\n");    InOrderTraverse(T);    printf("\n");    PostOrderTraverse(T);    return 0;}

运行界面

原创粉丝点击