数据结构实验之二叉树四:还原二叉树
2016-08-09 17:02
239 查看
数据结构实验之二叉树四:还原二叉树
Time Limit: 1000MS Memory limit: 65536K
题目描述
给定一棵二叉树的先序遍历序列和中序遍历序列,要求计算该二叉树的高度。输入
输入数据有多组,每组数据第一行输入1个正整数N(1 <= N <= 50)为树中结点总数,随后2行先后给出先序和中序遍历序列,均是长度为N的不包含重复英文字母(区分大小写)的字符串。输出
输出一个整数,即该二叉树的高度。示例输入
9 ABDFGHIEC FDHGIBEAC
示例输出
5
此题和树的深度,还有求后续遍历和层次遍历的题差不多
#include<stdio.h>#include<iostream>#include<stdlib.h>#include<algorithm>#include<string.h>#include<queue>using namespace std;struct node{char data;struct node *left;struct node *right;};struct node* create(char *s1,char *s2,int n){struct node *root;root=new node;if(n==0) return NULL;root->data=s1[0];int m=strchr(s2,s1[0])-s2;//函数strchr(string s,char c);表示查找字符c在字符串 s 中的位置,并返回这个位置//求左子树的结点的个数root->left=create(s1+1,s2,m); //递归求得左右子树root->right=create(s1+m+1,s2+m+1,n-m-1);return root;}int high(struct node *root){if(!root)return 0;else if(!root->left&&!root->right)return 1;else return max(high(root->left),high(root->right))+1;}int main(){char s1[1000],s2[1000];int n;struct node*root;root=new node;while( cin>>n){cin>>s1;cin>>s2;root=create(s1,s2,n);cout<<high(root)<<endl;}return 0;}
相关文章推荐
- Mysql存储引擎之TokuDB以及它的数据结构Fractal tree(分形树)
- 数据结构已知中后序列求前序及深度
- 数据结构实验之查找四:二分查找
- 数据结构上机实验之二分查找
- 数据结构实验之查找六:顺序查找
- 数据结构-5-160809双向有头环链
- 数据结构整理(一) 线性结构
- 数据结构实验之串二:字符串匹配
- 求二叉树的深度
- 数据结构实验之串一:KMP简单应用
- 数据结构上机实验之二分查找
- 数据结构实验之查找四:二分查找
- 数据结构实验之串三:KMP应用
- 数据结构实验之求二叉树后序遍历和层次遍历
- 数据结构实验之求二叉树后序遍历和层次遍历
- 数据结构实验之二叉树四:还原二叉树
- 数据结构实验之二叉树四:还原二叉树
- 数据结构实验之求二叉树后序遍历和层次遍历
- C语言-数据结构-递归求解实例-8皇后问题
- sdut oj3343 数据结构实验之二叉树四:还原二叉树