数据结构实验之二叉树四:还原二叉树
2016-04-13 21:15
567 查看
数据结构实验之二叉树四:还原二叉树
Time Limit: 1000MS Memory limit: 65536K
题目描述
给定一棵二叉树的先序遍历序列和中序遍历序列,要求计算该二叉树的高度。
输入
输入数据有多组,每组数据第一行输入1个正整数N(1 <= N <= 50)为树中结点总数,随后2行先后给出先序和中序遍历序列,均是长度为N的不包含重复英文字母(区分大小写)的字符串。
输出
输出一个整数,即该二叉树的高度。
示例输入
9 ABDFGHIEC FDHGIBEAC
示例输出
5
提示
#include <stdio.h> #include <stdlib.h> #include <string.h> #include <algorithm> using namespace std; struct node { char data; struct node *l, *r; }; struct node *creat(char *pre,char *mid,int len) { if(len <= 0){ return NULL; } struct node *root; root = (struct node *)malloc(sizeof(struct node)); root->data = *pre; char *p; for(p = mid;;p++){ if(*p == *pre){ break; } } int k = p-mid; root->l = creat(pre+1,mid,k); root->r = creat(pre+k+1,p+1,len-k-1); return root; } int deep(struct node *tree) { int h, k; if(tree){ h = deep(tree->l); k = deep(tree->r); return max(h,k)+1; }else { return 0; } } int main() { char s1[100]; char s2[100]; int n; struct node *tree; while(~scanf("%d", &n)){ scanf("%s %s", s1, s2); int len = strlen(s1); tree = creat(s1,s2,len); printf("%d\n", deep(tree)); } return 0; }
相关文章推荐
- Huffman树的简单实现
- 数据结构中八大排序算法
- 用于并行计算的多线程数据结构,第 2 部分: 设计不使用互斥锁的并发数据结构
- 用于并行计算的多线程数据结构,第 1 部分: 设计并发数据结构
- 栈的数组表示
- 从键盘读入n个整数(升序),请编写算法实现: 建立带表头结点的单链表; 显示单链表,(形如:H->10->20->30->40); 在有序单链表中插入新的数据元素x; 将单链表就地逆
- C语言实现的数据结构之------哈希表
- LRU Cache数据结构
- Java数据结构——哈希表
- YTUOJ之逆序输出单词(串)
- HDU 4411最小费用流
- 考研中的算法时间复杂度求解
- java中的数据结构
- 数据结构图的运算(深度优先)
- 数据结构与算法-第12章二叉树和其他树-001遍历集合的所有子集
- linux内核数据结构之kfifo(实现)
- 数据结构(java)——栈及其应用
- ThreadLocal
- 数据结构和算法05 之红-黑树(看完包懂~)
- 数据结构和算法10 之带权图