5-4 是否同一棵二叉搜索树 (25分)
来源:互联网 发布:肇庆金蝶软件 编辑:程序博客网 时间:2024/06/11 11:06
5-4 是否同一棵二叉搜索树 (25分)
给定一个插入序列就可以唯一确定一棵二叉搜索树。然而,一棵给定的二叉搜索树却可以由多种不同的插入序列得到。例如分别按照序列{2, 1, 3}和{2, 3, 1}插入初始为空的二叉搜索树,都得到一样的结果。于是对于输入的各种插入序列,你需要判断它们是否能生成一样的二叉搜索树。
输入格式:
输入包含若干组测试数据。每组数据的第1行给出两个正整数N (≤10)和L,分别是每个序列插入元素的个数和需要检查的序列个数。第2行给出N个以空格分隔的正整数,作为初始插入序列。最后L行,每行给出N个插入的元素,属于L个需要检查的序列。
简单起见,我们保证每个插入序列都是1到N的一个排列。当读到N为0时,标志输入结束,这组数据不要处理。
输出格式:
对每一组需要检查的序列,如果其生成的二叉搜索树跟对应的初始序列生成的一样,输出“Yes”,否则输出“No”。
输入样例:
4 23 1 4 23 4 1 23 2 4 12 12 11 20
输出样例:
YesNoNo
这里大概思考了一下,将树的每个节点进行比较进行确认。但是没有想到递归,记住这种每个过程都重复的操作一定要想到递归的方法
#include "stdafx.h"#include "stdlib.h"#include "iostream"typedef int ElementType;typedef struct TreeNode *PNode;typedef struct TreeNode{ElementType Data;PNode left;PNode right;TreeNode(int _date=-1)//新学的一种初始化方式,基本上等于类的构造函数{Data=_date;left=NULL;right=NULL;}};PNode Insert(ElementType x,PNode T){if(T==NULL) { T=new TreeNode(x); //类似于调用构造函数 if(T==NULL) printf("error\n"); /* else{ //使用new这种方法这步就可以省了 T->Data=x; T->left=T->right=NULL; } */ } else if(x>T->Data) T->right=Insert (x,T->right); else if(x<T->Data) T->left=Insert(x,T->left); return T; }bool SameOrNot(PNode T1,PNode T2){if(T1==NULL&&T2==NULL)return true;else if(T1==NULL&&T2!=NULL)return false;else if(T1!=NULL&&T2==NULL)return false;else if(T2->Data!=T1->Data)return false;else{bool flag1=SameOrNot(T1->left,T2->left);if(flag1){bool flag2=SameOrNot(T1->right,T2->right);if(flag2)return true;}return false;}}int main(){int n,m; while(scanf("%d",&n) >0) { scanf("%d",&m); int i , tmpn ; PNode root = NULL ; for(i = 0 ; i < n ; i++) { scanf("%d",&tmpn); root = Insert(tmpn,root); } while(m --) { PNode root2 = NULL ; for(i = 0 ; i < n ; i++) { scanf("%d",&tmpn); root2 = Insert(tmpn,root2); } if(SameOrNot(root , root2)) printf("Yes\n"); else printf("No\n"); } } return 0 ; }
阅读全文
0 0
- 5-4 是否同一棵二叉搜索树 (25分)
- 5-4 是否同一棵二叉搜索树 (25分)
- 5-4 是否同一棵二叉搜索树 (25分)
- 5-7 是否同一棵二叉搜索树 (25分)
- 5-4 是否同一棵二叉搜索树 (25分)(两种方法)
- 5-4 是否同一棵二叉搜索树 (25分) PTA
- 是否同一棵二叉搜索树 (25分)
- 是否同一棵二叉搜索树(25 分)
- 04-树4 是否同一棵二叉搜索树 (25分)
- 04-树4 是否同一棵二叉搜索树 (25分)
- 04-树4 是否同一棵二叉搜索树 (25分)
- 04-树4 是否同一棵二叉搜索树 (25分)
- 04-树4 是否同一棵二叉搜索树 (25分)
- 04-树4 是否同一棵二叉搜索树 (25分)
- 04-树4 是否同一棵二叉搜索树 (25分)
- 04-树4 是否同一棵二叉搜索树 (25分)
- 04-树4 是否同一棵二叉搜索树 (25分)
- 04-树4 是否同一棵二叉搜索树 (25 分)
- 项目涉及到前端了,笔记
- 脚本建立用户并设置密码
- 统计二进位中1的个数
- settings.db自定义Android系统默认设置l 转载
- java 学习 第五天 继承
- 5-4 是否同一棵二叉搜索树 (25分)
- Android毕设总结(基于Android的金融软件系统)
- ShareSDK分享
- ehci、xhci是什么?它们有什么区别
- 查看自己机器是小端还是大端
- spring boot 发布成war
- android c打日志 回调java方法(非静态方法)
- [leetcode]304. Range Sum Query 2D
- SSM整合的pom.xml和jar包整理