두 갈래 나무의 깊이를 계산하다

3290 단어 두 갈래 나무

두 갈래 나무의 선차적 역행 서열과 중차적 역행 서열을 정하고 이 두 갈래 나무의 깊이를 계산해야 한다.


형식 입력:


입력은 먼저 정수 N(≤50)을 주고 트리의 결점 총수입니다.다음 두 줄은 선순과 중순을 차례로 보여 줍니다. 모두 길이가 N인 중복된 영문자 (대소문자 구별) 를 포함하지 않는 문자열입니다.

출력 형식:


이 두 갈래 나무의 높이를 정수로 출력합니다.

샘플 입력:


9 ABDFGHIEC FDHGIBEAC

내보내기 예제:


#include
#include
int flag=0;
using namespace std;
typedef struct node
{
    struct node *left;
    struct node *right;
    char data;
}Node;
Node *binarytree(char a[],char b[],int len)
{
    int i;
    if (len==0)
    return NULL;
    Node *p;
    p=(Node *)malloc(sizeof(Node));
    p->data=a[0];
    for (i=0;iif (b[i]==a[0])
        break;
    }
    p->left=binarytree(a+1,b,i);
    p->right=binarytree(a+i+1,b+i+1,len-1-i);
    return p;
}
 judge , , 。
void judge(Node *p,int level)
{
    if (p==NULL)
    return ;
    if (level>flag)
    flag=level;
    if (p->left!=NULL)
    judge(p->left,level+1);
    if (p->right!=NULL)
    judge(p->right,level+1);
}
int main()
{
    int i,n;
    cin>>n;
    char pre[n],mid[n];
    for (i=0;icin>>pre[i];
    for (i=0;icin>>mid[i];
    Node *tree;
    tree=(Node *)malloc(sizeof(Node));
    tree=binarytree(pre,mid,n);
    judge(tree,1);
    cout<

좋은 웹페이지 즐겨찾기