九度OJ 1009: 二叉搜索树 两棵树的判等+二叉搜索树的建立
来源:互联网 发布:java打印所有水仙花数 编辑:程序博客网 时间:2024/05/20 16:13
浙大的这道考研上机真题的大意是给定两个序列,判定由这两个序列所构成的二叉排序树是否一样。
关键在于建树的过程和判定两棵树是否相等即可。判定两棵树是否相等可以用递归求解,先看当前结点是否相等或都为空,再看两棵子树的情况。
题目URL:http://ac.jobdu.com/problem.php?id=1009
我的AC代码,和大家分享一下。
#include<iostream>#include<stdio.h>using namespace std;struct Node{int d;Node *l, *r;Node(int data){d = data;l = r = NULL;}};bool search(Node * root, Node *& fa, int key){if(!root) return false;else{while(root){fa = root;if(key > root->d) root = root->r;else if(key < root->d) root = root->l;else return true;}return false;}}void insert(Node * &root, int key){if(!root){root = new Node(key);return;}else {Node *ins;if(!search(root, ins, key)){if(key > ins->d)ins->r = new Node(key);else ins->l = new Node(key);}}}bool treeCom(Node *s, Node *t){if(!s && !t) return true;else if(!s || !t) return false;if(s->d != t->d) return false;if(treeCom(s->l, t->l) && treeCom(s->r, t->r)) return true;}int main(){int n;Node *r, *s;char str[11];while(scanf("%d", &n) && n){r = NULL;scanf("%s", str);for(int i=0; i<10; i++)insert(r, str[i] - '0');for(int i=0; i<n; i++){s = NULL;scanf("%s", str);for(int i=0; i<10; i++)insert(s, str[i] - '0');if(treeCom(r, s)) printf("YES\n");else printf("NO\n");}} system("pause");return 0;}
- 九度OJ 1009: 二叉搜索树 两棵树的判等+二叉搜索树的建立
- 二叉搜索树的建立与遍历 九度oj
- 九度OJ 1009 二叉搜索树
- 九度oj-1009-二叉搜索树
- 九度OJ - 1009 - 二叉搜索树
- 九度OJ 1009 二叉搜索树
- 九度OJ-1009-二叉搜索树
- 九度OJ 1009 二叉搜索树
- 九度OJ 1009:二叉搜索树 (二叉树)
- 二叉搜索树的建立
- 九度OJ-题目1009:二叉搜索树
- 九度oj 题目1009:二叉搜索树
- 九度oj:题目1009 二叉搜索树
- 九度OJ,题目1009-二叉搜索树
- 九度 oj 题目1009:二叉搜索树
- 九度OJ-题目1009 二叉搜索树
- 九度OJ——1009二叉搜索树
- 九度oj 题目1367:二叉搜索树的后序遍历序列
- file命令的移植
- 【轻松学排序算法】眼睛直观感受几种常用排序算法
- 任正非 一江春水向东流
- 域名命名技巧
- mysql修改用户名密码
- 九度OJ 1009: 二叉搜索树 两棵树的判等+二叉搜索树的建立
- uboot_2009.08之mkconfig分析
- 深度剖析WinPcap-获得与释放网络适配器设备列表
- 开题报告、文献检索账号、文献综述、外文翻译、抄袭检测软件、论文目录,免费分享,都在这了
- android学习笔记32:标题栏进度条
- CWnd中创建控件修改其TAB顺序
- Zend Framework教程-Application
- 二维数组动态分配和释放 [转]
- Halcon 通过xld检测贴片