数据结构课设 还原二叉树(求高度)

5-9 还原二叉树   (25分)

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

输入格式:

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

输出格式:

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

输入样例:

9
ABDFGHIEC
FDHGIBEAC

输出样例:

5

不建树:

#include <iostream>
#include <cstring>
using namespace std;
int getHeight(string pro, string in) {
	char c = pro.at(0);
	int i = in.find(c);
	int len = pro.size();
	if(len == 1) return 1;
	int leftHeight ,rightHeight;
	leftHeight = rightHeight = 0;
	if(i >= 1) {
		leftHeight = getHeight(pro.substr(1, i), in.substr(0, i - 1));
	}
	if(i < len - 1) {
		rightHeight = getHeight(pro.substr(i + 1, len - 1), in.substr(i + 1, len - 1));
	}
	return 1 + max(leftHeight, rightHeight);
}
int main() {
    string pro, in;
    int n;
    cin >> n;
    cin >> pro >> in;
    cout << getHeight(pro, in);
    return 0;
}


你可能感兴趣的:(数据结构课设 还原二叉树(求高度))