[华为机试练习题]33.二叉搜索树
2015-07-01 22:10
267 查看
题目
描述:
题目类别:
难度:
运行时间限制:
内存限制:
阶段:
输入:
输出:
样例输入:
样例输出:
代码
描述:
判断两序列是否为同一二叉搜索树序列
题目类别:
树
难度:
中级
运行时间限制:
10Sec
内存限制:
128MByte
阶段:
入职前练习
输入:
开始一个数n,(1<=n<=20) 表示有n个需要判断,n= 0 的时候输入结束。 接下去一行是一个序列,序列长度小于10,包含(0~9)的数字,没有重复数字,根据这个序列可以构造出一颗二叉搜索树。 接下去的n行有n个序列,每个序列格式跟第一个序列一样,请判断这两个序列是否能组成同一颗二叉搜索树。
输出:
如果序列相同则输出YES,否则输出NO
样例输入:
2 567432 543267 576342 0
样例输出:
YES NO
代码
/*--------------------------------------- * 日期:2015-07-01 * 作者:SJF0115 * 题目:二叉搜索树 * 来源:华为机试练习题 -----------------------------------------*/ #include <iostream> #include <vector> #include <string> #include <algorithm> #include <list> using namespace std; struct TreeNode{ char val; TreeNode* left; TreeNode* right; TreeNode(char x):val(x),left(NULL),right(NULL){} }; // 往查找二叉树中插入节点 void InsertTree(TreeNode*& root,char val){ // 创建新节点 TreeNode* node = new TreeNode(val); // 空树 if(root == NULL){ root = node; return; }//if // 寻找插入位置 TreeNode* pre = NULL; TreeNode* p = root; while(p){ pre = p; // 沿左子树下降 if(p->val > val){ p = p->left; }//if // 沿右子树下降 else{ p = p->right; }//else }//while // 插入作为左子结点 if(pre->val > val){ pre->left = node; }//if // 插入作为右子结点 else{ pre->right = node; }//else } // 创建查找二叉树 TreeNode* CreateTree(string str){ TreeNode* root = NULL; int size = str.size(); if(size <= 0){ return root; }//if for(int i = 0;i < size;++i){ InsertTree(root,str[i]); }//for return root; } // 先序遍历 void PreOrder(TreeNode* root,string &result){ if(root == NULL){ return; }//if result += root->val; PreOrder(root->left,result); PreOrder(root->right,result); } int main(){ int n; string str; //freopen("C:\\Users\\Administrator\\Desktop\\c++.txt","r",stdin); while(cin>>n && n != 0){ cin>>str; TreeNode* root = CreateTree(str); string preResult = ""; PreOrder(root,preResult); for(int i = 0;i < n;++i){ cin>>str; TreeNode* root2 = CreateTree(str); string preResult2 = ""; PreOrder(root2,preResult2); if(preResult == preResult2){ cout<<"YES"<<endl; }//if else{ cout<<"NO"<<endl; }//else }//for }//while return 0; }
相关文章推荐
- 数据库隔离级别
- win7下装ubuntu双系统后无法进入win7的解决方法
- JAVA集合之——Comparable和Comparator
- _attribute_((packed))
- typedef函数指针用法
- 要靠自己
- Median of Two Sorted Arrays
- JavaScript权威指南_117_第15章_脚本化文档_15.2-选取文档元素-通过CSS选择器选取元素
- 如此——程序媛的一天
- Project Euler:Problem 53 Combinatoric selections
- 简单的底部菜单 类似微信订阅号里面的底部菜单
- PAT Advanced 1093. Count PAT's (25) 同 PAT Basic 1040
- 学习空间数据挖掘的总结
- ReactNavtive框架教程(2)
- 双击事件
- 戴尔服务器impi 设置
- Android UI中像素相关的名词解释
- oracle SQL语句
- php统计数组元素个数
- Pascal's Triangle