首页 > 代码库 > 九度OJ-题目1009:二叉搜索树

九度OJ-题目1009:二叉搜索树

题目1009:二叉搜索树

        从现在开始打算重启刷题征程。程序员的人生不需要解释!

这次撇开poj hoj等难度较大的oj系统,从九度入手(已经很长时间没写过代码了抓狂),主要先“叫醒” 沉睡依旧的大脑。唉~真的很长时间没写博客,没写代码了,只能加油吧!

题目如下

时间限制:1 秒

内存限制:32 兆

特殊判题:

提交:4310

解决:1921

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

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

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


题目难度:水题

解题思路:

        1.构建二叉排序树。(题目中叫做二叉搜索树,其时是一样的,就是对于二叉树的任何一个结点的所有左孩子结点都小于父结点,但是父节点都小于右孩子结点,好吧,我既然还能记得住,看来,大脑锈的不是很厉害)

        2.对构建的二叉排序树尽心前序遍历,得到前序序列。(前序就是 前根序,后序就是 后根序,中序就是 中根序)

        3.比较前根序列,一样就输出YES ,不一样就输出 NO

c++代码:

     

#include <iostream>
#include <string.h>
using namespace std;

struct Node{
    Node* left ;
    Node* right ;
    char data ;
    Node():left(NULL),right(NULL),data('*'){}
};

//插入有序树
void insertSortTree(Node * root, char data){
    Node * p = root ;
    Node * q = new Node ;
    q->data = http://www.mamicode.com/data ;>
好了,写代码的感觉来了。