/**************************************************
题目描述:
判断两序列是否为同一二叉搜索树序列
输入:
开始一个数n,(1<=n<=20) 表示有n个需要判断,n= 0 的时候输入结束。
接下去一行是一个序列,序列长度小于10,包含(0~9)的数字,没有重复数字,根据这个序列可以构造出一颗二叉搜索树。
接下去的n行有n个序列,每个序列格式跟第一个序列一样,请判断这两个序列是否能组成同一颗二叉搜索树。
输出:
如果序列相同则输出YES,否则输出NO
样例输入:
2
567432
543267
576342
0
样例输出:
YES
NO
******************************************************/
#include <iostream>
#include <fstream>
#include <string>using namespace std;const int N = 10 + 5;struct BTree {BTree *left;BTree *right;char ch;BTree():left(NULL), right(NULL) {};
};void insert(BTree **root, char ch);
void inOrder(BTree *root, string &s);
void freeTree(BTree *root);int main()
{string s, res1, res2;int n;BTree *root = NULL;#ifndef ONLINE_JUDGEifstream cin("d:\\OJ\\uva_in.txt");
#endif // ONLINE_JUDGEwhile (1) {cin >> n;if (n == 0)break;getline(cin, s);getline(cin, s);for (size_t i = 0; i < s.length(); i++) {insert(&root, s[i]);}res1.clear();inOrder(root, res1);freeTree(root);root = NULL;while (n--) {getline(cin, s);for (size_t i = 0; i < s.length(); i++) {insert(&root, s[i]);}res2.clear();inOrder(root, res2);//cout << "res1:" << res1 <<endl;//cout << "res2:" << res2 << endl;if (res1 == res2)cout << "YES" << endl;elsecout << "NO" << endl;freeTree(root);root = NULL;}}return 0;
}void insert(BTree **root, char ch)
{if (*root == NULL) {*root = new BTree();(*root)->ch = ch;} else if ((*root)->ch < ch) {insert(&((*root)->right), ch);} else if ((*root)->ch > ch) {insert(&((*root)->left), ch);}
}void inOrder(BTree *root, string &s)
{if (!root)return;s.append(1, root->ch);inOrder(root->left, s);inOrder(root->right, s);
}void freeTree(BTree *root)
{if (!root)return;freeTree(root->left);freeTree(root->right);delete root;
}

题目1009:二叉搜索树相关推荐

  1. 力扣题目——235. 二叉搜索树的最近公共祖先

    注:本文的代码实现使用的是 JS(JavaScript),为前端中想使用JS练习算法和数据结构的小伙伴提供解题思路.( 描述 给定一个二叉搜索树, 找到该树中两个指定节点的最近公共祖先. 最近公共祖先 ...

  2. LeetCode简单题之二叉搜索树的范围和

    题目 给定二叉搜索树的根结点 root,返回值位于范围 [low, high] 之间的所有结点的值的和. 示例 1: 输入:root = [10,5,15,3,7,null,18], low = 7, ...

  3. 剑指offer:面试题36. 二叉搜索树与双向链表

    题目: 二叉搜索树与双向链表 输入一棵二叉搜索树,将该二叉搜索树转换成一个排序的循环双向链表.要求不能创建任何新的节点,只能调整树中节点指针的指向. 为了让您更好地理解问题,以下面的二叉搜索树为例: ...

  4. 剑指offer:面试题33. 二叉搜索树的后序遍历序列

    题目:二叉搜索树的后序遍历序列 输入一个整数数组,判断该数组是不是某二叉搜索树的后序遍历结果.如果是则返回 true,否则返回 false.假设输入的数组的任意两个数字都互不相同. 参考以下这颗二叉搜 ...

  5. 剑指OFFER之从二叉搜索树的后序遍历序列(九度OJ1367)

    题目描述: 输入一个整数数组,判断该数组是不是某二叉搜索树的后序遍历的结果.如果是则输出Yes,否则输出No.假设输入的数组的任意两个数字都互不相同. 输入: 每个测试案例包括2行: 第一行为1个整数 ...

  6. PAT甲级1043 Is It a Binary Search Tree :[C++题解]判断二叉搜索树BST、给定前序序列和中序序列

    文章目录 题目分析 题目链接 题目分析 二叉搜索树(BST):左子树小于根结点,右子树大于等于根结点. 二叉搜索树的中序遍历一定是有序序列.所谓中序遍历:先访问左子树,再访问根结点,最后访问右子树. ...

  7. 二叉搜索树的插入、删除、修剪、构造操作(leetcode701、450、669、108)

    目录 1.leetcode 701. 二叉搜索树中的插入操作 1.题目 2.递归法 3.迭代法 2.leetcode 450. 二叉搜索树中的插入操作 1.题目 2.思路+递归法 3.迭代法 4.删除 ...

  8. LeetCode 1586. 二叉搜索树迭代器 II(数组+栈)

    文章目录 1. 题目 2. 解题 1. 题目 实现二叉搜索树(BST)的中序遍历迭代器 BSTIterator 类: BSTIterator(TreeNode root) 初始化 BSTIterato ...

  9. LeetCode 426. 将二叉搜索树转化为排序的双向链表(BST中序循环遍历)

    文章目录 1. 题目 2. 解题 1. 题目 将一个 二叉搜索树 就地转化为一个 已排序的双向循环链表 . 对于双向循环列表,你可以将左右孩子指针作为双向循环链表的前驱和后继指针,第一个节点的前驱是最 ...

  10. LeetCode 938. 二叉搜索树的范围和(二叉树遍历+搜索剪枝)

    文章目录 1. 题目 2. 解题 递归+剪枝 中序遍历循环+剪枝 1. 题目 给定二叉搜索树的根结点 root,返回 L 和 R(含)之间的所有结点的值的和. 题目的意思,节点的值在[L, R]这个区 ...

最新文章

  1. 《JavaScript应用程序设计》一一3.2 流式JavaScript
  2. 【ABAP】带PDF附件的邮件发送功能
  3. 二叉树的遍历:先序 中序 后序遍历的递归与非递归实现及层序遍历
  4. 电脑cpu温度过高怎么办_网络资讯:电脑cpu占用过高处理办法
  5. Docker简单入门
  6. 如何设计学术海报(翻译)
  7. [HDOJ1823] Luck and Love(线段树,树套树)
  8. 【Git/Github学习笔记】GitHub上README写法暨GFM语法解读
  9. matlab希尔伯特变换,基于matlab的Hilbert变换详解
  10. 数据包络分析-超效率模型
  11. python测试脚本实例-python脚本测试
  12. 快速了解云数据库RDS
  13. 在线笔试神器~福利哟
  14. 群晖php配置支持后端,群晖NAS服务器iSCSI管理器配置连接及使用说明
  15. 基于802.1q技术实现单线复用的一种思路
  16. java实现实体关系抽取
  17. idea启动报符号缺失,无法启动与构建
  18. C语言实现的BP神经网络算法(1)-BPANN原理
  19. 范式-范式:范式 百科
  20. C++—航班查询系统

热门文章

  1. Netadvantage锁定grid列和锁定Excel栏位
  2. Linux性能测试 ss命令
  3. Asp.net MVC开发RDLC报表
  4. 动态修改数据窗口的数据源
  5. 自学python找工作难吗-大四应届毕业生,学了两个月Python,找工作感觉好难啊?...
  6. 以下用于数据存储领域的python第三方库是-Python3爬虫学习之MySQL数据库存储爬取的信息详解...
  7. python软件包自带的集成开发环境-Python的10大集成开发环境和代码编辑器(指南)...
  8. python手机版下载官方-Python
  9. python可以干什么-学了Python可以用来干什么呢?
  10. python做电脑软件-程序员带你十天快速入门Python,玩转电脑软件开发(二)