华为机试题: 二叉搜索树
来源:互联网 发布:linux下tomcat自启动 编辑:程序博客网 时间:2024/05/20 23:35
描述:
判断两序列是否为同一二叉搜索树序列
题目类别: 树 难度: 中级 运行时间限制:10Sec内存限制:128MByte阶段: 入职前练习 输入:开始一个数n,(1<=n<=20) 表示有n个需要判断,n= 0 的时候输入结束。
接下去一行是一个序列,序列长度小于10,包含(0~9)的数字,没有重复数字,根据这个序列可以构造出一颗二叉搜索树。
接下去的n行有n个序列,每个序列格式跟第一个序列一样,请判断这两个序列是否能组成同一颗二叉搜索树。
输出:如果序列相同则输出YES,否则输出NO
样例输入:25674325432675763420样例输出:
YESNO
#include <iostream>#include <stdio.h>#include <string>#include <algorithm>#include <map>#include <vector>using namespace std;typedef struct Node{ char data; struct Node* lchild; struct Node* rchild; /*构造函数*/ Node(char d):data(d),lchild(NULL),rchild(NULL) { }}NODE;void InsertBiTreeNode(NODE* &root, char val){ NODE* pNewNode = new NODE(val); /*如果是一个空树*/ if(root == NULL) { root = pNewNode; return; } NODE* p = root, *pre = NULL; /*找到插入的节点*/ while(p) { pre = p; if(p->data < val) { p = p->rchild; } else { p = p->lchild; } } /*将该节点插入*/ if(pre->data > val) { pre->lchild = pNewNode; } else { pre->rchild = pNewNode; } return;}/*构建线索二叉树*/NODE* createBiTree(string str){ int i = 0, lens = str.size(); NODE* root = NULL; for(i = 0; i < lens; i++) { InsertBiTreeNode(root,str[i]); } return root;}/*前序遍历二叉树*/void preTree(NODE* root, string &ret){ if(root == NULL) { return; } ret += root->data; preTree(root->lchild,ret); preTree(root->rchild,ret);}int main(){ int n = 0; while(cin >> n && n != 0) { string str,ret1; NODE* root1 = NULL; cin >> str; root1 = createBiTree(str); preTree(root1,ret1); while(n--) { cin >> str; NODE* pTree = NULL; pTree = createBiTree(str); string ret2; preTree(pTree,ret2); if(ret1 == ret2) { cout << "YES" << endl; } else { cout << "NO" << endl; } } } return 0;}
0 0
- 华为机试题: 二叉搜索树
- [华为机试练习题]33.二叉搜索树
- 九度oj 题目1009:二叉搜索树 【ZJU2010考研机试题5】【二叉排序树】
- 面试题之二叉搜索树的中位数
- 面试题之二叉搜索树的中位数
- 面试题24:二叉搜索树与双向链表
- 面试题27:二叉搜索树与双向链表
- [各种面试题] 判断是否二叉搜索树
- 面试题:搜索二叉树转双向链表
- 【面试题】二叉搜索树转换双向链表
- 面试题27二叉搜索树与双向链表
- 面试题27:二叉搜索树与双向链表
- 面试题31:二叉搜索树与双向链表
- 面试题27:二叉搜索树和双向链表
- leetcode试题之求二叉搜索树的个数
- 面试题24:二叉搜索树的后续遍历序列
- 面试题27:二叉搜索树与双向链表
- 面试题27:二叉搜索树与双向链表
- linux如何安装jdk
- 【数据结构】邻接表表示法的图的深度广度优先遍历递归和非递归遍历
- Hibernate 增删改查操作
- 这是一篇测试文章
- android获取音频、视频、图片信息
- 华为机试题: 二叉搜索树
- 堆排序模板
- 欢迎使用CSDN-markdown编辑器
- 饱后思味
- 电子之模拟与数字电路学习笔记
- HashMap和HashTable的区别
- VS2013出现应用程序无法正常启动
- Swift开源项目精选
- sass的循环写法实例