数据结构实验之二叉树四:(先序中序)还原二叉树

简介: 数据结构实验之二叉树四:(先序中序)还原二叉树

数据结构实验之二叉树四:(先序中序)还原二叉树

Time Limit: 1000 ms Memory Limit: 65536 KiB

SubmitStatistic

Problem Description

给定一棵二叉树的先序遍历序列和中序遍历序列,要求计算该二叉树的高度。

Input

输入数据有多组,每组数据第一行输入1个正整数N(1 <= N <= 50)为树中结点总数,随后2行先后给出先序和中序遍历序列,均是长度为N的不包含重复英文字母(区分大小写)的字符串。

 

Output

输出一个整数,即该二叉树的高度。

Sample Input

9

ABDFGHIEC

FDHGIBEAC

Sample Output

5

Hint

Source

xam

#include <stdio.h>
#include <stdlib.h>
#include <string.h>
struct node
{
    char data;
    struct node *lc;
    struct node *rc;
};
char a[101], b[101];
struct node *creat(char a[], char b[], int n)
{
    struct node *root;
    if(n == 0)
    {
        return NULL;
    }
    int i;
    root = (struct node *)malloc(sizeof(struct node));
    root->data = a[0];
    for(i = 0; i < n; i++)
    {
        if(b[i] == a[0])
        {
            break;
        }
    }
    root->lc = creat(a+1,b,i);
    root->rc = creat(a+1+i, b+1+i, n - 1- i);
    return root;
}
int deep(struct node *root)
{
    int d, d1, d2;
    if(root != NULL)
    {
        d1 = deep(root->lc);
        d2 = deep(root->rc);
        if(d1 >= d2)
        {
            d = d1 + 1;
        }
        else
        {
            d = d2 + 1;
        }
    }
    else
    {
        d = 0;
    }
    return d;
}
int main()
{
    int n, h;
    while(scanf("%d", &n) != EOF)
    {
        struct node *root;
        scanf("%s %s", a, b);
        root = creat(a,b,n);
        h = deep(root);
        printf("%d\n", h);
    }
    return 0;
}


相关文章
|
3天前
|
数据可视化
数据结构——lesson8二叉树的实现
本文介绍了二叉树的基本操作和实现,包括二叉树的构建、销毁、节点个数计算、叶子节点个数、第k层节点个数、查找、高度计算以及判断是否为完全二叉树的方法。通过递归和层序遍历等技巧,详细阐述了这些操作的原理和代码实现。文章以实例和图解帮助读者理解二叉树的各种特性和操作。
|
2天前
|
机器学习/深度学习 分布式数据库
数据结构第六课 -----链式二叉树的实现
数据结构第六课 -----链式二叉树的实现
|
2天前
|
存储 算法 分布式数据库
数据结构第五课 -----二叉树的代码实现
数据结构第五课 -----二叉树的代码实现
|
3天前
数据结构——二叉树的层序遍历
数据结构——二叉树的层序遍历
|
3天前
数据结构——二叉树的遍历【前序、中序、后序】
数据结构——二叉树的遍历【前序、中序、后序】
|
3天前
|
算法 Java
数据结构奇妙旅程之二叉树题型解法总结
数据结构奇妙旅程之二叉树题型解法总结
|
3天前
|
存储 Java
数据结构奇妙旅程之二叉树初阶
数据结构奇妙旅程之二叉树初阶
数据结构奇妙旅程之二叉树初阶
|
4天前
|
存储 算法
【数据结构与算法】8.二叉树的基本概念|前序遍历|中序遍历|后序遍历
【数据结构与算法】8.二叉树的基本概念|前序遍历|中序遍历|后序遍历
|
7天前
|
NoSQL Ubuntu 开发工具
【gdb调试】在ubuntu环境使用gdb调试一棵四层二叉树的数据结构详解
【gdb调试】在ubuntu环境使用gdb调试一棵四层二叉树的数据结构详解
6 1
|
10天前
数据结构:9、二叉树
数据结构:9、二叉树
14 0