数据结构实验之二叉树四:(先序中序)还原二叉树
Description
给定一棵二叉树的先序遍历序列和中序遍历序列,要求计算该二叉树的高度。
Input
输入数据有多组,每组数据第一行输入1个正整数N(1 <= N <= 50)为树中结点总数,随后2行先后给出先序和中序遍历序列,均是长度为N的不包含重复英文字母(区分大小写)的字符串。
Output
输出一个整数,即该二叉树的高度。
Sample
Input
9 ABDFGHIEC FDHGIBEAC
Output
5
#include<iostream> #include<cstring> using namespace std; struct Tnode { char d; Tnode *l,*r; }; Tnode *CreatTree(char pre[],char in[],int len) { if(len<=0) return NULL; int i; for( i=0;i<len;i++) if(*pre==in[i]) break; Tnode *p=new Tnode; p->d=*pre; p->l=CreatTree(pre+1,in,i); p->r=CreatTree(pre+i+1,in+i+1,len-i-1); return p; } int DeepT(Tnode *p) { if(!p) return 0; else { int l=DeepT(p->l)+1; int r=DeepT(p->r)+1; return l>r?l:r; } } int main() { int n; while(cin>>n) { char st1[60],st2[60]; cin>>st1>>st2; Tnode *root; root=CreatTree(st1,st2,n); cout<<DeepT(root)<<endl; } return 0; }
#include <iostream> #include <cstdio> using namespace std; struct Tree { char c; Tree *lt,*rt; }; Tree *creat(char *&xx,char *zx) { if(*zx=='