用c语言编程实现二叉树的建立和遍历二叉树

来源:互联网 发布:手机cpu调频软件 编辑:程序博客网 时间:2024/04/28 22:09
T) exit(OVERFLOW);T->data=ch;//创建左子树CreateBiTree(T->lchild);//创建右子树CreateBiTree(T->rchild);}return OK;}//输出元素dataStatus PrntTElem(TElemType data){putchar(data);return OK;}//先序遍历二叉树Status PreOrderTraverse(BiTree T *rchild;//左右孩子指针}BiTNode //这是我上数据结构写的 建议理解为主#include<stdio.h>#include<stdlib.h>#define ERROR 0#define OK 1#define OVERFLOW -2#define FLASE 0#define TURE 1typedef int Status;typedef char TElemType;typedef struct BiTNode{TElemType data;struct BiTNode *lchild T->rchild)return 1;else return BiTreeLeaves(T->lchild)+BiTreeLeaves(T->rchild);}//销毁int DestroyBiTree(BiTree &T){if(T){if(DestroyBiTree(T->lchild))if(DestroyBiTree(T->rchild))T=NULL;}return OK;}void main(){BiTree T;CreateBiTree(T);printf("先序结果为:");PreOrderTraverse(T visit))if(visit(T->data))return OK;return ERROR;}else return OK;}//求二叉树深度int BiTreeDepth(BiTree T){ int ldep=0 visit))if(PostOrderTraverse(T->rchild Status(*visit)(TElemType e)){if(T){if(PostOrderTraverse(T->lchild visit))return OK;return ERROR;}else return OK;}//后序遍历二叉树Status PostOrderTraverse(BiTree T visit))if(visit(T->data))if(InOrderTraverse(T->rchild Status(*visit)(TElemType e)){if(T){if(InOrderTraverse(T->lchild visit))return OK;return ERROR;}else return OK;}//中序遍历二叉树Status InOrderTraverse(BiTree T visit))if(PreOrderTraverse(T->rchild Status(*visit)(TElemType e)){if(T){if((*visit)(T->data))if(PreOrderTraverse(T->lchild *BiTree;//构造一个二叉树Status CreateBiTree(BiTree &T){TElemType str[]="ABC$$D$EF$$G$$$";static int i=0;TElemType ch;ch=str[i++];if(ch=='$')T=NULL;else{//创建树结点T=(BiTNode*)malloc(sizeof(BiTNode));if( T->lchild&& T)return 0;else if( PrntTElem);printf("/n");} PrntTElem);printf("/n后序结果为:");PostOrderTraverse(T PrntTElem);printf("/n中序结果为:");InOrderTraverse(T BiTreeLeaves(T));DestroyBiTree(T);printf("先序结果为:");PreOrderTraverse(T BiTreeDepth(T));printf("叶子数为: %d/n" PrntTElem);printf("/n二叉树的深度为: %d/n" PrntTElem);printf("/n后序结果为:");PostOrderTraverse(T PrntTElem);printf("/n中序结果为:");InOrderTraverse(T rdep=0; if(T==NULL) return 0; ldep=BiTreeDepth(T->lchild); rdep=BiTreeDepth(T->rchild); if(ldep>=rdep) return ldep+1; else return rdep+1; }//求叶子数int BiTreeLeaves(BiTree T){if(
原创粉丝点击