04-树4 是否同一棵二叉搜索树 (25分)

满分代码,有疑问欢迎留言

#include<iostream>
#include<stdio.h>
#include<algorithm>
using namespace std;
long long int N,L,x;//声明变量 
typedef struct TreeNode *List;//构建树结构 
typedef List Position;
struct TreeNode{
	int Data;
	List Left;
	List Right;
};
List B=NULL,B1=NULL;//建立两颗用来比较的树
 
List Insert(int X,List BST){
 
	if(!BST){
		BST=(List)malloc(sizeof(struct TreeNode));
		BST->Data=X;
		BST->Left=BST->Right=NULL;
	}else{
			if(X<BST->Data)
        	BST->Left=Insert(X,BST->Left);
         	else if(X>BST->Data)
         	BST->Right=Insert(X,BST->Right);
	}

	return BST;
}
//建立比较树 
List ReadPoly(){ 
 
	for(int i=0;i<N;i++){
		cin>>x;
		B1=Insert(x,B1);
	}
	return B1;
}
int compare1(List T1,List T2){

	if(T1==NULL&&T2==NULL)
	return 1;
	if(T1&&T2)
		if(T1->Data==T2->Data)
			if(compare1(T1->Left,T2->Left)&&compare1(T1->Right,T2->Right))
			return 1;
		return 0;

}

int main(){
	
	while(cin>>N&&N!=0){
		
     	B=NULL;
		cin>>L;
		for(int i=0;i<N;i++){
		cin>>x;
		B=Insert(x,B);
		}
		while(L--){
			
		B1=NULL;
		B1=ReadPoly();
		
		if(compare1(B,B1))
		cout<<"Yes"<<endl;
		else
		cout<<"No"<<endl;
		}
	}
	return 0;

}

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值