devcpp代碼名字如果太相近就會出現bug
#include <iostream>
using namespace std;
const int maxn = 100;
int a[maxn],b[maxn];
struct TreeNode {
int val;
TreeNode* left,*right;
TreeNode(int a):val(a),left(NULL),right(NULL) {}
};
int height(TreeNode* root) {
if (root==NULL) return 0;
else return max(height(root->left),height(root->right))+1;
}
TreeNode* f(int l1,int r1,int l2,int r2) {
if (l2<=r2) {
TreeNode* root = new TreeNode(a[l1]);
int i=l2,cmp=0;
while(i<=r2&&a[l1]!=b[i]) {
i++; cmp++;
}
if (i>r2) return NULL;
root->left = f(l1+1,l1+cmp,l2,i-1);
root->right= f(l1+cmp+1,r1,i+1,r2);
// cout<<a[l1]<<" ";
return root;
} else return NULL;
}
int main() {
int t;
cin>>t;
while(t--) {
int n;
cin>>n;
for(int i=1;i<=n;i++) cin>>a[i];
for(int i=1;i<=n;i++) cin>>b[i];
TreeNode* root = f(1,n,1,n);
cout<<height(root)-1<<endl;
}
}