考研机试真题--二叉搜索树--浙江大学

关键字:二叉搜索树建树;判断两棵二叉搜索树是否一致:可以通过判断前序遍历序列是否一致(前序、中序序列能确定唯一一棵二叉树,而相同元素的二叉搜索树的中序序列一致)

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

题目链接:
https://www.nowcoder.com/practice/3d6dd9a58d5246f29f71683346bb8f1b?tpId=40&tqId=21455&tPage=1&rp=1&ru=/ta/kaoyan&qru=/ta/kaoyan/question-ranking

代码:

#include <iostream>
#include <fstream>
#include <cmath>
#include <cstdlib>
#include <string>
#include <cstring>
using namespace std;
int idx;

struct BTNode{
    char data;
    struct BTNode *lchild, *rchild;
};

void insertNode(BTNode **root, int x){
    if(!(*root)){
        (*root) = (BTNode*)malloc(sizeof(BTNode));
        (*root)->data = x;
        (*root)->lchild = (*root)->rchild = NULL;
        return ;
    }
    if((*root)->data == x) return ;
    if(x < (*root)->data){
        insertNode(&(*root)->lchild, x);
    }
    else{
        insertNode(&(*root)->rchild, x);
    }
}

void PreOrderTraverse(BTNode *root, char* c){
    if(!root) return ;
    c[idx++] = root->data;
    PreOrderTraverse(root->lchild, c);
    PreOrderTraverse(root->rchild, c);
}


int main(){
//    freopen("a.txt", "r", stdin);
    int n;
    string s1, s2;
    BTNode *root1, *root2;
    int len;
    while(cin >> n && n != 0){
        char t1[11] = {0}, t2[11] = {0};
        root1 = root2 = NULL;
        getchar();
        getline(cin, s1);
        len = s1.length();
        for(int i = 0; i < len; ++i){
            insertNode(&root1, s1[i]);
        }
        idx = 0;
        PreOrderTraverse(root1, t1);
        for(int i = 0; i < n; ++i){

            root2 = NULL;
            getline(cin, s2);
            for(int i = 0; i < len; ++i){
                insertNode(&root2, s2[i]);
            }
            idx = 0;
            PreOrderTraverse(root2, t2);
            puts(strcmp(t1, t2) == 0 ? "YES" : "NO");

        }
    }


    return 0;
}

猜你喜欢

转载自blog.csdn.net/Void_worker/article/details/81124723
今日推荐