网站建设研究方法用vs做购物网站
news/
2025/9/23 10:01:17/
文章来源:
网站建设研究方法,用vs做购物网站,网站快速备案公司,手机版网站怎么做题目描述 对应给定的一个序列可以唯一确定一棵二叉排序树。然而#xff0c;一棵给定的二叉排序树却可以由多种不同的序列得到。例如分别按照序列{3,1,4}和{3,4,1}插入初始为空的二叉排序树#xff0c;都得到一样的结果。你的任务书对于输入的各种序列#xff0c;判断它们是否…题目描述 对应给定的一个序列可以唯一确定一棵二叉排序树。然而一棵给定的二叉排序树却可以由多种不同的序列得到。例如分别按照序列{3,1,4}和{3,4,1}插入初始为空的二叉排序树都得到一样的结果。你的任务书对于输入的各种序列判断它们是否能生成一样的二叉排序树。 输入描述 输入包含若干组测试数据。每组数据的第1行给出两个正整数Nn≤10和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 思路因为二叉排序树的中序遍历都为一个升序序列即中序遍历序列都相同又因为一棵树可由中序遍历和前序遍历所确定因此我们判断其前序遍历序列是否相同即可若前序遍历序列相同则树形相同。
建树过程
先申请一个树根并初始化 Node *rxnew Node; rx NULL;递归建树若遇到空结点则申请一个新节点并对其属性初始化 root new Node; root-id val; Code:
#includebits/stdc.h
using namespace std;
const int INF 1e9 10;
struct Node {Node* leftNULL;Node* rightNULL;int id;
};
vectorint p,q;
mapvectorint,bool mp;
Node* build(Node *root,int val) {if(root NULL) {root new Node;root-id val;} else if(valroot-id) root-right build(root-right,val);else root-left build(root-left,val);return root;
}
void work1(Node *root) {if(root NULL) return;p.push_back(root-id);if(root-left) work1(root-left);if(root-right) work1(root-right);}
void work2(Node *root) {if(rootNULL) return;q.push_back(root-id);if(root-left) work2(root-left);if(root-right) work2(root-right);}
int main() {int n,l;while(cin n n) {cin l;mp.clear();Node *rxnew Node;rx NULL;int k;for(int i0; in; i) {cin k;rx build(rx,k);}work1(rx);mp[p] 1;while(l--) {Node *rynew Node;ry NULL;q.clear();for(int j0; jn; j) {cin k;ry build(ry,k);}work2(ry);mp[q]1?puts(Yes):puts(No);}}return 0;
}
本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.mzph.cn/news/912137.shtml
如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!