国产探花免费观看_亚洲丰满少妇自慰呻吟_97日韩有码在线_资源在线日韩欧美_一区二区精品毛片,辰东完美世界有声小说,欢乐颂第一季,yy玄幻小说排行榜完本

首頁(yè) > 學(xué)院 > 開發(fā)設(shè)計(jì) > 正文

數(shù)據(jù)結(jié)構(gòu)實(shí)驗(yàn)之查找一:二叉排序樹

2019-11-08 03:27:27
字體:
來(lái)源:轉(zhuǎn)載
供稿:網(wǎng)友

PRoblem Description

對(duì)應(yīng)給定的一個(gè)序列可以唯一確定一棵二叉排序樹。然而,一棵給定的二叉排序樹卻可以由多種不同的序列得到。例如分別按照序列{3,1,4}和{3,4,1}插入初始為空的二叉排序樹,都得到一樣的結(jié)果。你的任務(wù)書對(duì)于輸入的各種序列,判斷它們是否能生成一樣的二叉排序樹。 Input

輸入包含若干組測(cè)試數(shù)據(jù)。每組數(shù)據(jù)的第1行給出兩個(gè)正整數(shù)N (n < = 10)和L,分別是輸入序列的元素個(gè)數(shù)和需要比較的序列個(gè)數(shù)。第2行給出N個(gè)以空格分隔的正整數(shù),作為初始插入序列生成一顆二叉排序樹。隨后L行,每行給出N個(gè)元素,屬于L個(gè)需要檢查的序列。 簡(jiǎn)單起見,我們保證每個(gè)插入序列都是1到N的一個(gè)排列。當(dāng)讀到N為0時(shí),標(biāo)志輸入結(jié)束,這組數(shù)據(jù)不要處理。 Output

對(duì)每一組需要檢查的序列,如果其生成的二叉排序樹跟初始序列生成的二叉排序樹一樣,則輸出”Yes”,否則輸出”No”。 Example Input

4 2 3 1 4 2 3 4 1 2 3 2 4 1 2 1 2 1 1 2 0 Example Output

Yes No No Hint

Author xam

#include<stdio.h>#include<string.h>#include<stdlib.h>struct node{ int data; struct node *l, *r;};struct node *creat(struct node *root, int number){ if(root == NULL) { root = (struct node *) malloc (sizeof(struct node)); root -> data = number; root -> l = NULL; root -> r = NULL; } else { if(root -> data > number) root -> l = creat(root -> l, number); else root -> r = creat(root -> r, number); } return root;};int x;void judge(struct node *root1, struct node *root2){ if(root1 && root2) { if(root1 -> data == root2 -> data) { x++; judge(root1 -> l, root2 -> l);//別忘了遞歸。。。 judge(root2 -> r, root2 -> r); } else return; } if(root1 == NULL || root2 == NULL) return;}int main(){ int n, l, i, j, number; while(scanf("%d", &n) != EOF) { if(n == 0) break; scanf("%d", &l); struct node *root1 = NULL;//NULL不能忘了 for(i = 0; i < n; i++) { scanf("%d", &number); root1 = creat(root1, number); } for(i = 0; i < l; i++) { struct node *root2 = NULL;//同上 x = 0; for(j = 0; j < n; j++) { scanf("%d", &number); root2 = creat(root2, number); } judge(root1, root2); if(x == n) printf("Yes/n"); else printf("No/n"); } } return 0;}
發(fā)表評(píng)論 共有條評(píng)論
用戶名: 密碼:
驗(yàn)證碼: 匿名發(fā)表
主站蜘蛛池模板: 五峰| 沾益县| 蒲江县| 吕梁市| 积石山| 阜阳市| 和硕县| 淮滨县| 平舆县| 互助| 石屏县| 平罗县| 交城县| 长白| 昭平县| 武义县| 白银市| 会宁县| 原阳县| 丽水市| 高雄市| 诸城市| 新平| 湘乡市| 中卫市| 杭锦旗| 开江县| 青海省| 左权县| 永清县| 东乌珠穆沁旗| 泰来县| 东安县| 黄山市| 舒城县| 资讯 | 米泉市| 哈尔滨市| 平山县| 富顺县| 湾仔区|