数据结构实验之二叉树四:还原二叉树
2016-11-02 17:23
537 查看
数据结构实验之二叉树四:还原二叉树
Time Limit: 1000MSMemory Limit: 65536KB
[align=center]SubmitStatistic[/align]
Problem Description
给定一棵二叉树的先序遍历序列和中序遍历序列,要求计算该二叉树的高度。Input
输入数据有多组,每组数据第一行输入1个正整数N(1 <= N <= 50)为树中结点总数,随后2行先后给出先序和中序遍历序列,均是长度为N的不包含重复英文字母(区分大小写)的字符串。Output
输出一个整数,即该二叉树的高度。Example Input
9 ABDFGHIEC FDHGIBEAC
Example Output
5
#include<iostream> #include<stdlib.h> #include<stdio.h> using namespace std; struct node { char data; struct node *l,*r; }; struct node *creat(int n,char a[],char b[]) { struct node *root; int t; char *p; if(n==0) return NULL;//若写为root=NULL;为错误;可在下面加一个else语句; root=(struct node *)malloc(sizeof(struct node)); root->data=a[0]; for(p=b; p!='\0'; p++) { if(*p==a[0]) break; } t=p-b; root->l=creat(t,a+1,b); root->r=creat(n-t-1,a+1+t,p+1); return root; }; int deepth(struct node *root) { int d=0;//注意赋初值 if(root) { int dl=deepth(root->l); int dr=deepth(root->r); d=dl>dr?dl+1:dr+1; } return d; } int main() { int m,n; char a[101],b[101]; while(cin>>n) { struct node *root; cin>>a>>b; root=creat(n,a,b); m=deepth(root); cout<<m<<endl; } return 0; }<pre name="code" class="cpp">#include <iostream> #include<stdio.h> #include<stdlib.h> using namespace std; struct node { int data; struct node *l,*r; }; struct node *creat(int n,char a[],char b[]) { struct node *root; int t; char *p; if(n==0) root=NULL; else { root=new node; root->data=a[0]; for(p=b;p!='\0';p++) { if(*p==a[0]) break; } t=p-b; root->l=creat(t,a+1,b); root->r=creat(n-t-1,a+t+1,p+1); } return root; }; int deep(struct node *root) { int d=0; if(root) { int dl=deep(root->l); int dr=deep(root->r); d=dl>dr?dl+1:dr+1; } return d; } int main() { int n,m; char a[101],b[101]; struct node *root; while(cin>>n) { cin>>a>>b; root=creat(n,a,b); m=deep(root); cout<<m<<endl; } return 0; }
相关文章推荐
- 数据结构实验之二叉树四:还原二叉树
- 数据结构实验之二叉树四:还原二叉树
- 数据结构实验之二叉树四:还原二叉树
- sdutacm-数据结构实验之二叉树四:还原二叉树
- SDUT-3343 数据结构实验之二叉树四:(先序中序)还原二叉树
- 数据结构实验之二叉树四:(先序中序)还原二叉树 oj
- 数据结构实验之二叉树四:还原二叉树
- 数据结构实验之二叉树四:还原二叉树
- 数据结构实验之二叉树四:还原二叉树
- SDUT 3343 数据结构实验之二叉树四:还原二叉树
- 数据结构实验之二叉树四:还原二叉树 (sdut oj 3343)
- SDUT 3343 数据结构实验之二叉树四:(先序中序)还原二叉树
- 数据结构实验之二叉树四:还原二叉树
- 3343 数据结构实验之二叉树四:(先序中序)还原二叉树
- [SDUT](3343)数据结构实验之二叉树四:(先序中序)还原二叉树
- 数据结构实验之二叉树四:还原二叉树
- 数据结构实验之二叉树四:(先序中序)还原二叉树
- 数据结构实验之二叉树四:还原二叉树
- 数据结构实验之二叉树四:还原二叉树
- 数据结构实验之二叉树四:(先序中序)还原二叉树