是否同一棵二叉搜索树
2018-03-30 11:17
288 查看
二叉查找树(Binary Search Tree),(又:二叉搜索树,二叉排序树)它或者是一棵空树,或者是具有下列性质的二叉树: 若它的左子树不空,则左子树上所有结点的值均小于它的根结点的值; 若它的右子树不空,则右子树上所有结点的值均大于它的根结点的值;
它的左、右子树也分别为二叉排序树。
给定一个插入序列就可以唯一确定一棵二叉搜索树。然而,一棵给定的二叉搜索树却可以由多种不同的插入序列得到。例如分别按照序列{2, 1, 3}和{2, 3, 1}插入初始为空的二叉搜索树,都得到一样的结果。于是对于输入的各种插入序列,你需要判断它们是否能生成一样的二叉搜索树。
(2)建树的时候,一定要初始化为空树
(3) 给结点赋值时,一定要将他的左右孩子赋值为空
(4)判断是否是二叉搜索树的时候,有两种情况:1.两数都为空2.两树都不为空,并且结点的数值相等,判断其左右
孩子是否相等;其他条件返回false
它的左、右子树也分别为二叉排序树。
给定一个插入序列就可以唯一确定一棵二叉搜索树。然而,一棵给定的二叉搜索树却可以由多种不同的插入序列得到。例如分别按照序列{2, 1, 3}和{2, 3, 1}插入初始为空的二叉搜索树,都得到一样的结果。于是对于输入的各种插入序列,你需要判断它们是否能生成一样的二叉搜索树。
输入格式:
输入包含若干组测试数据。每组数据的第1行给出两个正整数N (≤)和L,分别是每个序列插入元素的个数和需要检查的序列个数。第2行给出N个以空格分隔的正整数,作为初始插入序列。最后L行,每行给出N个插入的元素,属于L个需要检查的序列。简单起见,我们保证每个插入序列都是1到N的一个排列。当读到N为0时,标志输入结束,这组数据不要处理。输出格式:
对每一组需要检查的序列,如果其生成的二叉搜索树跟对应的初始序列生成的一样,输出“Yes”,否则输出“No”。输入样例:
4 2 3 1 4 2 3 4 1 2 3 2 4 1 2 1 2 1 1 2 0
输出样例:
Yes No No
#include<iostream> using namespace std; typedef struct Tree { int data; struct Tree *left; struct Tree *right; }Tree,*Bintree; void build(Tree *(&T),int a)//这个地方也可以写成 void build(Bintree &T,int a) { if(T==NULL) { T=new Tree; T->data =a; T->left =T->right =NULL; } else { if(a<T->data ) build(T->left ,a); else build(T->right ,a); } } bool cp(Tree *T1,Tree *T2) { if(!T1&&!T2) return true; if(T1&&T2) if(T1->data==T2->data ) if(cp(T1->left,T2->left )&&cp(T1->right,T2->right )) return true; return false; } int main() { int i; //Tree *T1,*T2; int n,l,a; while(cin>>n) { Tree *T1=NULL; if(n==0) return 0; cin>>l; for(i=0;i<n;i++) { cin>>a; build(T1,a); } while(l--) { Tree *T2=NULL; for(i=0;i<n;i++) { cin>>a; build(T2,a); } if(cp(T1,T2)) cout<<"Yes"<<endl; else cout<<"No"<<endl; } } return 0; }注意事项:(1)本题需要判断是否为零时结束程序,所以在输入的时候,不需要固定格式的输入,可先输入n之后进行判断, n=0,return 0;
(2)建树的时候,一定要初始化为空树
(3) 给结点赋值时,一定要将他的左右孩子赋值为空
(4)判断是否是二叉搜索树的时候,有两种情况:1.两数都为空2.两树都不为空,并且结点的数值相等,判断其左右
孩子是否相等;其他条件返回false
相关文章推荐
- 04-树4 是否同一棵二叉搜索树
- 是否同一棵二叉搜索树 (25分)
- 5-4 是否同一棵二叉搜索树 (25分) PTA
- 是否同一棵二叉搜索树
- pta 是否同一棵二叉搜索树
- 是否同一棵二叉搜索树
- 04-树4 是否是同一棵二叉搜索树
- PAT:是否为同一棵二叉搜索树(Java实现)
- pta 是否同一棵二叉搜索树
- pat 是否同一棵二叉搜索树
- 判定一棵二叉树是否是二叉搜索树
- 04-树4 是否同一棵二叉搜索树
- 04-树4 是否同一棵二叉搜索树 (25分)
- 数据结构系统回顾与总结(3)(判断是否为同一棵二叉搜索树)
- 04-树4 是否同一棵二叉搜索树
- 判断一棵二叉树是否为二叉搜索树(BST)
- 判定一棵二叉树是否是二叉搜索树
- 是否为同一棵二叉搜索树
- 判定一棵二叉树是否是二叉搜索树
- 7-4 是否同一棵二叉搜索树