数据结构实验之二叉树的建立与遍历
来源:互联网 发布:淘宝上买摩托车被骗了 编辑:程序博客网 时间:2024/05/18 03:30
数据结构实验之二叉树的建立与遍历
Time Limit: 1000MS Memory limit: 65536K
题目描述
已知一个按先序序列输入的字符序列,如abc,,de,g,,f,,,(其中逗号表示空节点)。请建立二叉树并按中序和后序方式遍历二叉树,最后求出叶子节点个数和二叉树深度。
输入
输入一个长度小于50个字符的字符串。
输出
输出共有4行:
第1行输出中序遍历序列;
第2行输出后序遍历序列;
第3行输出叶子节点个数;
第4行输出二叉树深度。
第1行输出中序遍历序列;
第2行输出后序遍历序列;
第3行输出叶子节点个数;
第4行输出二叉树深度。
示例输入
abc,,de,g,,f,,,
示例输出
cbegdfacgefdba35
参考学长代码写的,现在还不明白为什么求深度函数返回值不是0;
#include <stdio.h>#include <stdlib.h>#include <string.h>int sd=0,yz=0;struct node{ char data; struct node *l,*r;};struct node *build(struct node *t){ char c; c=getchar(); if(c==',') t=NULL; else { t=(struct node*)malloc(sizeof(struct node)); t->data=c; t->l=build(t->l); t->r=build(t->r); } return t;}void zx(struct node *t){ if(t!=NULL) { zx(t->l); printf("%c",t->data); zx(t->r); }}void hx(struct node *t){ if(t!=NULL) { hx(t->l); hx(t->r); printf("%c",t->data); }}void yezishu(struct node *t){ if(t!=NULL) { if(t->l==NULL&&t->r==NULL) yz++; else { yezishu(t->l); yezishu(t->r); } }}int shendu(struct node *t){ int a=0,b=0; if(t!=NULL) { a=shendu(t->l); b=shendu(t->r); if(a>b)return a+1; else return b+1; } else return 0;}int main(){ struct node *t=NULL; t=build(t); zx(t); printf("\n"); hx(t); printf("\n"); yezishu(t); printf("%d\n",yz); sd=shendu(t); printf("%d",sd); return 0;}
#include<stdio.h>#include<stdlib.h>#include<string.h>int s=0;struct node{char data;struct node *l,*r;}m[10000];int creat(){char c;int p=s;s++;c=getchar();if(c==',')return -1;else{m[p].data=c;m[p].l=creat();m[p].r=creat();return p;}}void zhongxu(int n){if(m[n].l!=-1)zhongxu(m[n].l);printf("%c",m[n].data);if(m[n].r!=-1)zhongxu(m[n].r);}void houxu(int n){if(m[n].l!=-1)houxu(m[n].l);if(m[n].r!=-1)houxu(m[n].r);printf("%c",m[n].data);}int yezishu(int n){int a=0;if(m[n].l==-1&&m[n].r==-1)return 1;if(m[n].l!=-1)a+=yezishu(m[n].l);if(m[n].r!=-1)a+=yezishu(m[n].r);return a;}int shendu(int n){int ll=0,rr=0;if(m[n].r==-1&&m[n].l==-1)return 1;if(m[n].l!=-1)ll=shendu(m[n].l);if(m[n].r!=-1)rr=shendu(m[n].r); return rr>ll?rr+1:ll+1;}void main(){int n;n=creat();zhongxu(n);printf("\n");houxu(n);printf("\n%d\n",yezishu(n));printf("%d",shendu(n));}
0 0
- 数据结构实验之二叉树的建立与遍历
- 数据结构实验之二叉树的建立与遍历
- 数据结构实验之二叉树的建立与遍历
- 数据结构实验之二叉树的建立与遍历
- 数据结构实验之二叉树的建立与遍历
- 2136 数据结构实验之二叉树的建立与遍历
- 2136 数据结构实验之二叉树的建立与遍历
- 数据结构实验之二叉树的建立与遍历
- 数据结构实验之二叉树的建立与遍历
- 数据结构实验之二叉树的建立与遍历
- 数据结构实验之二叉树的建立与遍历
- sdutoj2136 数据结构实验之二叉树的建立与遍历
- 数据结构实验之二叉树的建立与遍历
- 数据结构实验之二叉树的建立与遍历
- 数据结构实验之二叉树的建立与遍历
- 数据结构实验之二叉树的建立与遍历
- 数据结构实验之二叉树的建立与遍历
- 数据结构实验之二叉树的建立与遍历 SDUT
- Ubuntu 13.04 eclipse启动菜单栏失效的解决方案
- MSM8X10调试AT2250添加在线调试模式
- struts ajax result param
- Warning: World-writable config file '/etc/my.cnf' is ignored
- Android面试题整理
- 数据结构实验之二叉树的建立与遍历
- Check the active user in the Application
- 网上找到的一段关于SAP支持服务的Q&A (转)
- 不是有了个“牛比”的通讯组件就能写好服务器程序的
- c++之菱形继承
- iOS 开发 动画总结
- JavaScript Puzzlers javascript解惑
- AVA概述(10) 函数(应用)
- 祝福自个儿