九度OJ刷题——1009:二叉搜索树

题目描述:
判断两序列是否为同一二叉搜索树序列
输入:
开始一个数n,(1<=n<=20) 表示有n个需要判断,n= 0 的时候输入结束。
接下去一行是一个序列,序列长度小于10,包含(0~9)的数字,没有重复数字,根据这个序列可以构造出一颗二叉搜索树。
接下去的n行有n个序列,每个序列格式跟第一个序列一样,请判断这两个序列是否能组成同一颗二叉搜索树。
输出:

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

样例输入:
2
567432
543267
576342
0
样例输出:
YES
NO

这题我的思路是将序列转换成用数组表示的二叉树,然后比较两个数组是否相同即可。
源代码:

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
#include <iostream>
#include <cstring>
using namespace std;
 
const int N = 10000;
 
int sTree[N];
int dTree[N];
 
void string2Tree(char *s, int *tree);
void insert(char c, int *tree);
bool isSameTree();
 
int main(){
    int n;
    while(cin>>n && n){
        memset(sTree, -1, sizeof(sTree));
        char s[1000], d[1000];
        cin >> s;
        string2Tree(s, sTree);
        for(int i=0; i<n; i++){
            cin >> d;
            if(strlen(s) != strlen(d)){
                cout << "NO" << endl;
                continue;
            }
            memset(dTree, -1, sizeof(dTree));
            string2Tree(d, dTree);
            if(isSameTree()) cout << "YES" << endl;
            else cout << "NO" << endl;
        }
    }
 
    return 0;
}
 
void string2Tree(char *s, int *tree){
    int len = strlen(s);
    tree[1] = s[0] - '0';
    for(int i=1; i<len; i++){
        insert(s[i], tree);
    }
}
 
void insert(char c, int *tree){
    int curPos = 1;
    int curChar = c - '0';
    while(tree[curPos] != -1){
        if(tree[curPos] < curChar){
            curPos = 2 * curPos + 1;
        }
        else{
            curPos = 2 * curPos;
        }
    }
    tree[curPos] = curChar;
}
 
bool isSameTree(){
    for(int i=1; i<N; i++){
        if(sTree[i] != dTree[i]) return false;
    }
    return true;
}

  

 
posted on   C_haos  阅读(227)  评论(0编辑  收藏  举报
编辑推荐:
· 一个奇形怪状的面试题:Bean中的CHM要不要加volatile?
· [.NET]调用本地 Deepseek 模型
· 一个费力不讨好的项目,让我损失了近一半的绩效!
· .NET Core 托管堆内存泄露/CPU异常的常见思路
· PostgreSQL 和 SQL Server 在统计信息维护中的关键差异
阅读排行:
· DeepSeek “源神”启动!「GitHub 热点速览」
· 微软正式发布.NET 10 Preview 1:开启下一代开发框架新篇章
· 我与微信审核的“相爱相杀”看个人小程序副业
· C# 集成 DeepSeek 模型实现 AI 私有化(本地部署与 API 调用教程)
· spring官宣接入deepseek,真的太香了~
点击右上角即可分享
微信分享提示