时间限制:1 秒

内存限制:32 兆

特殊判题:否

提交:6321

解决:2767

题目描述:
判断两序列是否为同一二叉搜索树序列
输入:
开始一个数n,(1<=n<=20) 表示有n个需要判断,n= 0 的时候输入结束。

接下去一行是一个序列,序列长度小于10,包含(0~9)的数字,没有重复数字,根据这个序列可以构造出一颗二叉搜索树。

接下去的n行有n个序列,每个序列格式跟第一个序列一样,请判断这两个序列是否能组成同一颗二叉搜索树。
输出:

如果序列相同则输出YES,否则输出NO

样例输入:
2
567432
543267
576342
0
样例输出:
YES
NO
来源:
2010年浙江大学计算机及软件工程研究生机试真题

思路:

有两种方法,一种是静态数组模拟二叉树,另一种是直接建树。

判断相等用递归即可。

代码:

#include <stdio.h>
#include <stdlib.h> #define M 10 struct node {
int k;
struct node *l;
struct node *r;
}; struct node *create (struct node *h, int k)
{
if (h == NULL)
{
struct node *p = malloc(sizeof(struct node));
p->k = k;
p->l = NULL;
p->r = NULL;
return p;
}
if (k == h->k)
return h;
if (k < h->k)
h->l = create(h->l, k);
else
h->r = create(h->r, k);
return h;
} int issame(struct node *ha, struct node *hb)
{
if (ha == NULL && hb == NULL)
return 1;
if (ha == NULL || hb == NULL)
return 0; if (ha->k != hb->k)
return 0;
if ( issame(ha->l, hb->l) == 0)
return 0;
if ( issame(ha->r, hb->r) == 0)
return 0;
return 1;
} void delete(struct node *h)
{
if (h == NULL)
return;
delete(h->l);
delete(h->r);
free(h);
} int main()
{
int i, k, n, tmp;
int result;
char s[M+1];
struct node *ha = NULL, *hb = NULL; while(scanf("%d", &n) != EOF)
{
if (n == 0)
break; ha = NULL;
scanf("%s", s);
for (i=0; s[i]; i++)
{
tmp = s[i]-48;
//printf("i=%d\n", i);
ha = create(ha, tmp);
} for (k=0; k<n; k++)
{
hb = NULL;
scanf("%s", s);
for (i=0; s[i]; i++)
{
tmp = s[i]-48;
//printf("i=%d\n", i);
hb = create(hb, tmp);
} result = issame(ha, hb);
if (result == 1)
printf("YES\n");
else
printf("NO\n"); delete(hb);
}
}
return 0;
}
/**************************************************************
Problem: 1009
User: liangrx06
Language: C
Result: Accepted
Time:0 ms
Memory:912 kb
****************************************************************/

九度OJ 1009:二叉搜索树 (二叉树)的更多相关文章

  1. 二叉搜索树 & 二叉树 & 遍历方法

    二叉搜索树 & 二叉树 & 遍历方法 二叉搜索树 BST / binary search tree https://en.wikipedia.org/wiki/Binary_searc ...

  2. 【九度OJ】题目1113:二叉树 解题报告

    [九度OJ]题目1113:二叉树 解题报告 标签(空格分隔): 九度OJ http://ac.jobdu.com/problem.php?pid=1113 题目描述: 如上所示,由正整数1,2,3-- ...

  3. 【九度OJ】题目1078:二叉树遍历 解题报告

    [九度OJ]题目1078:二叉树遍历 解题报告 标签(空格分隔): 九度OJ http://ac.jobdu.com/problem.php?pid=1078 题目描述: 二叉树的前序.中序.后序遍历 ...

  4. HDU3791二叉搜索树(二叉树)

    Problem Description 判断两序列是否为同一二叉搜索树序列   Input 开始一个数n,(1<=n<=20) 表示有n个需要判断,n= 0 的时候输入结束.接下去一行是一 ...

  5. 九度oj题目1385:重建二叉树

    题目1385:重建二叉树 时间限制:1 秒 内存限制:32 兆 特殊判题:否 提交:4419 解决:1311 题目描述: 输入某二叉树的前序遍历和中序遍历的结果,请重建出该二叉树.假设输入的前序遍历和 ...

  6. 九度OJ 1201:二叉排序树 (二叉树)

    时间限制:1 秒 内存限制:32 兆 特殊判题:否 提交:4894 解决:2062 题目描述: 输入一系列整数,建立二叉排序数,并进行前序,中序,后序遍历. 输入: 输入第一行包括一个整数n(1< ...

  7. 九度OJ 1513 二进制中1的个数

    题目地址:http://ac.jobdu.com/problem.php?pid=1513 题目描述: 输入一个整数,输出该数二进制表示中1的个数.其中负数用补码表示. 输入: 输入可能包含多个测试样 ...

  8. 九度OJ 1035:找出直系亲属(二叉树)

    题目1035:找出直系亲属 时间限制:1 秒 内存限制:32 兆 特殊判题:否 提交:1309 解决:521 题目描述: 如果A,B是C的父母亲,则A,B是C的parent,C是A,B的child,如 ...

  9. 九度oj 题目1385:重建二叉树

    题目描述: 输入某二叉树的前序遍历和中序遍历的结果,请重建出该二叉树.假设输入的前序遍历和中序遍历的结果中都不含重复的数字.例如输入前序遍历序列{1,2,4,7,3,5,6,8}和中序遍历序列{4,7 ...

随机推荐

  1. (0)git安装

    windows安装 https://blog.csdn.net/sishen47k/article/details/80211002

  2. POJ3086 Treats for the Cows(区间DP)

    题目链接  Treats for the Cows 直接区间DP就好了,用记忆化搜索是很方便的. #include <cstdio> #include <cstring> #i ...

  3. weblogic10.3.6忘记用户名或者密码的解决方法

    weblogic安装后,忘记访问控制台的用户名或者密码,可通过以下步骤来重置用户名密码. 版本:WebLogic Server 10.3 说明:%DOMAIN_HOME%:指WebLogic Serv ...

  4. Arduino可穿戴教程Linux平台下安装Arduino IDE

    Arduino可穿戴教程Linux平台下安装Arduino IDE Linux平台下安装Arduino IDE Linux平台下的安装方式和Windows下的zip形式安装是类似的,只是Linux下的 ...

  5. centos6.7下安装配置vnc

    vnc是一款使用广泛的服务器管理软件,可以实现图形化管理,下面简单介绍一下如何在centos6.7下安装vnc. 1.安装vncserver yum install tigervnc tigervnc ...

  6. popcount 算法分析

    转载: http://blog.csdn.net/gaochao1900/article/details/5646211 http://www.cnblogs.com/Martinium/archiv ...

  7. EasyMvc入门教程-基本控件说明(7)文字块导航

    文字块导航其实就是开发winform时候常见的 带Title的Group面板..~!@#¥..好吧,没开发过winform的同学看下图: 实现代码如下: @Html.Q().BlockField(). ...

  8. 九度oj题目&amp;吉大考研10年机试题全解

    吉大考研机试2010年题目 题目一(jobdu1478:三角形的边).    http://ac.jobdu.com/problem.php?pid=1478 给出三个正整数,计算最小的数加上次小的数 ...

  9. 在容器内执行go编译程序的坑

    如果你编译了一个go程序,让后把它放到容器里面.很多时候这个程序都会无法执行,大概的样子是: /tmp # ls pub sub /tmp # ./pub /bin/ash: pub: not fou ...

  10. HTML5 Canvas 绘制佛教万字

    代码如下: <!DOCTYPE html> <html lang="utf-8"> <meta http-equiv="Content-Ty ...