您的位置:首页 > 其它

1002. 计算二叉查找树的高度

2016-12-30 15:14 260 查看
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;

}
}
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: