数据结构实验之二叉树四:(先序中序)还原二叉树
2018-01-23 20:57
411 查看
数据结构实验之二叉树四:(先序中序)还原二叉树
Time Limit: 1000MSMemory Limit: 65536KB
[align=center][/align]
Problem Description
给定一棵二叉树的先序遍历序列和中序遍历序列,要求计算该二叉树的高度。Input
输入数据有多组,每组数据第一行输入1个正整数N(1 <= N <= 50)为树中结点总数,随后2行先后给出先序和中序遍历序列,均是长度为N的不包含重复英文字母(区分大小写)的字符串。Output
输出一个整数,即该二叉树的高度。Example Input
9 ABDFGHIEC FDHGIBEAC
Example Output
5
#include<stdio.h> #include<string.h> #include<stdlib.h> struct node { char date; struct node *lchild, *rchild; }; struct node *creat(char *a, char *b, int n) { char *p; struct node *ptr = (struct node *)malloc(sizeof(struct node)); int k = 0; if(n <= 0)return NULL; ptr -> date = a[0]; for(p = b; *p != '\0'; p++) { if(*p == *a)break; } k = p - b; ptr -> lchild = creat(a + 1, b, k); ptr -> rchild = creat(a + k + 1, p + 1, n - k - 1); return ptr; } int deep(struct node *T) { if(T == NULL)return 0; else return deep(T -> lchild) > deep(T -> rchild) ? deep(T -> lchild) + 1 : deep(T -> rchild) + 1; } int main() { int n, y; char a[60], b[60]; struct node *T; while(~scanf("%d", &n)) { scanf("%s %s", a, b); n = strlen(a); T = creat(a, b, n); y = deep(T); printf("%d\n", y); } return 0; }
相关文章推荐
- 3343 数据结构实验之二叉树四:(先序中序)还原二叉树
- 数据结构实验之二叉树四:(先序中序)还原二叉树
- SDUT 3343 数据结构实验之二叉树四:(先序中序)还原二叉树
- C语言 数据结构之二叉树 数据结构实验之二叉树四:(先序中序)还原二叉树
- 数据结构实验之二叉树四:(先序中序)还原二叉树
- SDUT-3343 数据结构实验之二叉树四:(先序中序)还原二叉树
- [SDUT](3343)数据结构实验之二叉树四:(先序中序)还原二叉树
- 数据结构实验之二叉树四:(先序中序)还原二叉树
- 数据结构实验之二叉树四:(先序中序)还原二叉树
- 数据结构实验之二叉树四:(先序中序)还原二叉树 oj
- 3343 数据结构实验之二叉树四:(先序中序)还原二叉树
- 数据结构实验之二叉树四:(先序中序)还原二叉树
- 数据结构实验之二叉树四:(先序中序)还原二叉树
- 数据结构实验之二叉树四:(先序中序)还原二叉树
- 数据结构实验之二叉树四:还原二叉树 (sdut oj 3343)
- 数据结构实验之二叉树四:还原二叉树
- 数据结构实验之二叉树四:还原二叉树
- 数据结构实验之二叉树四:还原二叉树
- SDUTACM 数据结构实验之二叉树四:还原二叉树
- SDUT 3343 数据结构实验之二叉树四:还原二叉树