【2136】数据结构实验之二叉树的建立与遍历 SDUTOJ
2014-08-21 21:03
288 查看
数据结构实验之二叉树的建立与遍历
Time Limit: 1000ms Memory limit: 65536K 有疑问?点这里^_^题目描述
已知一个按先序序列输入的字符序列,如abc,,de,g,,f,,,(其中逗号表示空节点)。请建立二叉树并按中序和后序方式遍历二叉树,最后求出叶子节点个数和二叉树深度。输入
输入一个长度小于50个字符的字符串。输出
输出共有4行:第1行输出中序遍历序列;第2行输出后序遍历序列;第3行输出叶子节点个数;第4行输出二叉树深度。示例输入
abc,,de,g,,f,,,
示例输出
cbegdfa cgefdba 3 5
#include <stdio.h>#include <string.h>#include <stdlib.h>int a=0,b=0;struct node{char str;struct node *left,*right;}*p;struct node *creat(struct node *p)//先序建立二叉树{char ch;scanf("%c",&ch);if(ch==',')p=NULL;else{p=(struct node *)malloc(sizeof(struct node));
p->str=ch;p->left=creat(p->left);p->right=creat(p->right);}return p;};void zhongxu(struct node *p)//中序遍历序列输出{if(p!=NULL){zhongxu(p->left);printf("%c",p->str);zhongxu(p->right);}}void houxu(struct node *p)//后续遍历序列输出{if(p!=NULL){houxu(p->left);houxu(p->right);printf("%c",p->str);}}int yezi(struct node *p)//求叶子个数的函数{if(p!=NULL){if(p->left==NULL&&p->right==NULL)a++;yezi(p->left);yezi(p->right);}return a;}int deep(struct node *p)//求二叉树深度的函数{int l,r;if(!p)return 0;l=deep(p->left);r=deep(p->right);return l>r?l+1:r+1;}int main(){int n;struct node *root;root=creat(p);zhongxu(root);printf("\n");houxu(root);printf("\n");printf("%d\n",yezi(root));printf("%d\n",deep(root));return 0;}
相关文章推荐
- 【2136】数据结构实验之二叉树的建立与遍历 SDUTOJ
- sdut 2136 数据结构实验之二叉树的建立与遍历
- 2136 数据结构实验之二叉树的建立与遍历
- 2136 数据结构实验之二叉树的建立与遍历
- 暑假集训 8.8 sdut2136 数据结构实验之二叉树的建立与遍历
- sdut 2136 数据结构实验之二叉树的建立与遍历(二叉树遍历,叶子数和深度)
- 2136-->数据结构实验之二叉树的建立与遍历
- 【二叉树的建立和遍历】SDUTOJ 2136---数据结构实验之二叉树的建立与遍历
- SDUT-2136 数据结构实验之二叉树的建立与遍历
- SDUT-2136 数据结构实验之二叉树的建立与遍历
- SDUTOJ 2136 数据结构实验之二叉树的建立与遍历
- SDUT 2136 数据结构实验之二叉树的建立与遍历
- SDUT 2136 数据结构实验之二叉树的建立与遍历
- 2136数据结构实验之二叉树的建立与遍历
- SDUT 2136 数据结构实验之二叉树的建立与遍历
- SDUT-2136数据结构实验之二叉树的建立与遍历
- [SDUT](2136)数据结构实验之二叉树的建立与遍历 ---- 二叉树
- SDUT 2136 数据结构实验之二叉树的建立与遍历
- 数据结构实验之二叉树的建立与遍历
- 数据结构实验之二叉树的建立与遍历