数据结构与算法题目集 7-23 还原二叉树

7-23 还原二叉树 (25分)

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

输入格式:

输入首先给出正整数N(≤50),为树中结点总数。下面两行先后给出先序和中序遍历序列,均是长度为N的不包含重复英文字母(区别大小写)的字符串。

输出格式:

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

输入样例:

9
ABDFGHIEC
FDHGIBEAC

输出样例:

5

题解: 

#include <bits/stdc++.h>
using namespace std;

int depth(string a, string b)
{
    int pos = (int)b.find(a[0]);
    int dpl = pos ? depth(a.substr(1, pos), b.substr(0, pos)) : 0;
    int dpr = pos == b.length() - 1 ? 0 : depth(a.substr(pos + 1), b.substr(pos + 1));
    return max(dpl, dpr) + 1;
}

int main()
{
    int n;
    string a, b;
    cin >> n >> a >> b;
    cout << depth(a, b);
    return 0;
}
发布了367 篇原创文章 · 获赞 148 · 访问量 2万+

猜你喜欢

转载自blog.csdn.net/qq_35850147/article/details/103573967
今日推荐