04-树4 是否同一棵二叉搜索树

来源:互联网 发布:淘宝未发货前退款 编辑:程序博客网 时间:2024/05/16 06:31

题意

给你一个序列构造一个二叉搜索树,然后再给你L个序列,对每个序列构造二叉搜索树,问这棵二叉搜索树跟最开始的二叉搜索树是否一样?

解题思路

分别构造二叉搜索树,然后同时对两棵二叉搜索树进行遍历,看是否一样。

参考代码

#include <iostream>using namespace std;typedef struct Node{    int v;    struct Node *l,*r;}*tree;int a[15],b[15];void Insert(tree &t,int x){    if (t==NULL){        t=new Node;        t->v=x;        t->l=t->r=NULL;        return;    }    if (x>t->v)        Insert(t->r,x);    else        Insert(t->l,x);}bool query(tree t1,tree t2){    if (t1==NULL && t2==NULL){        return true;    }    else if (t1!=NULL && t2!=NULL){        if (t1->v!=t2->v) return false;        else{            if (query(t1->l,t2->l)==true && query(t1->r,t2->r)==true)                return true;            return false;        }    }    return false;}int main(){    int n,l,x;    while (cin>>n){        if (n==0) break;        cin>>l;        tree t1=NULL,t2=NULL;        for (int i=0;i<n;i++){            cin>>x;            Insert(t1,x);        }        for (int i=0;i<l;i++){            t2=NULL;            for (int j=0;j<n;j++){                cin>>x;                Insert(t2,x);            }            if (query(t1,t2)==true) cout<<"Yes"<<endl;            else cout<<"No"<<endl;        }    }    return 0;}
0 0
原创粉丝点击