搜索
首页 电脑/网络 操作系统/系统故障

数据结构二叉树的操作

(1)用递归方法创建二叉链表(2)用递归算法对二叉树进行先序遍历,中序遍历和后序遍历,并输出遍历结果(3)对二叉树进行层次遍历,并输出遍历序列(4)求二叉树的深度并输出那位高手麻烦不要太复杂的,好了还追加分

全部回答

2018-05-21

19 0
    #include //头文件#include #include typedef struct BiTNode{ char data; struct BiTNode *lchild,*rchild;} BiTNode,*BiTree;//定义结点类型typedef struct QNode{ BiTNode data; struct QNode *next; } //定义队列的节点类型QNode,*QueuePtr;typedef struct{ QueuePtr front; QueuePtr rear; }LinkQueue;//队列void InitQueue(LinkQueue *Q)//创建队列{ Q->front=Q->rear=(QueuePtr)malloc(sizeof(QNode)); Q->front->next=NULL;}void EnQueue(LinkQueue *Q,BiTNode e)//将元素入队{ QueuePtr p; p=(QueuePtr)malloc(sizeof(QNode));//为结点开辟空间 p->data=e; p->next=NULL; Q->rear->next=p; Q->rear=p;}BiTNode DeQueue(LinkQueue *Q)//将元素出列并返回元素的值。
    { BiTNode e;QueuePtr p; p=Q->front->next; e=p->data; Q->front->next=p->next; if(Q->rear==p) Q->rear=Q->front; free(p);//释放节点 return (e);}int QueueEmpty(LinkQueue *Q)//判断队列是否为空{ if(Q->front==Q->rear ) return 1; else return 0;}BiTree CreateBiTree()//创建树{ char p;BiTree T; scanf("%c",&p); if(p==' ') T=NULL; else { T=(BiTNode *)malloc(sizeof(BiTNode));//为结点开辟空间 T->data=p; T->lchild=CreateBiTree(); T->rchild=CreateBiTree(); } return (T);}void PreOrder(BiTree T)//先序{ if(T!=NULL) { printf("%c",T->data); PreOrder(T->lchild); PreOrder(T->rchild); }}void InOrder(BiTree T)//中序{ if(T!=NULL) { InOrder(T->lchild); printf("%c",T->data); InOrder(T->rchild); }}void PostOrder(BiTree T)//后序{ if(T!=NULL) { PostOrder(T->lchild); PostOrder(T->rchild); printf("%c",T->data); }}void LevelOrder(BiTree T)//层次遍历 { LinkQueue Q; BiTNode p; InitQueue(&Q); EnQueue(&Q,*T); while(!QueueEmpty(&Q)) { p = DeQueue(&Q); printf("%c",p。
    data); if(p。lchild!=NULL) EnQueue(&Q,*(p。lchild)); if(p。rchild!=NULL) EnQueue(&Q,*(p。
    rchild)); }}int Depth(BiTree T)/* 深度 */ { int num1,num2; if(T==NULL) return(0); num1=Depth(T->lchild); num2=Depth(T->rchild); if(num1>num2) return(num1 1); else return(num2 1); }void main()//主函数{ BiTree Ta;int num; Ta=CreateBiTree(); printf("先序遍历:"); printf(" "); PreOrder(Ta); printf(" "); printf("中序遍历:"); printf(" "); InOrder(Ta); printf(" "); printf("后序遍历:"); printf(" "); PostOrder(Ta); printf(" "); printf("层次遍历:"); printf(" "); LevelOrder(Ta); printf(" "); num=Depth(Ta); printf("深度为:%d",num); }为你量身定做的,开始要创建树,如果不会输入可以问我哦。
  

类似问题换一批

热点推荐

热度TOP

相关推荐
加载中...

热点搜索 换一换

电脑/网络
操作系统/系统故障
硬件
电脑装机
程序设计
互联网
笔记本电脑
反病毒
百度
软件
操作系统/系统故障
操作系统/系统故障
举报
举报原因(必选):
取消确定举报