二叉排序树
2015-09-13 12:55
183 查看
#include <cstdio> #include <cstdlib> #include <cstring> #include <cctype> #include <cmath> #include <algorithm> #include <vector> #include <queue> #include <stack> #include <map> #define clc(a, b) memset(a, b, sizeof(a)) #define LL long long using namespace std; const int inf = 0x3f; const int INF = 0x3f3f3f3f; const int maxn = 1e6+5; struct Node { int data, flag; Node *lchild, *rchild; }node, tree; bool Search(Node *T, int key) { Node *p = T; while(p) { if(p->data == key) return true; if(key < p->data) { printf("E"); p = p->lchild; } else { printf("W"); p = p->rchild; } } return false; } Node* Insert(Node *T, int key) { Node *f = T, *p = T; while(p) { if(p->data == key) return T; f = p; p = (key < p->data) ? p->lchild : p->rchild; } p = (Node*)malloc(sizeof(Node)); p->data = key; p->lchild = p->rchild = NULL; if(T == NULL) { T = p; } else if(key < f->data) { f->lchild = p; } else f->rchild = p; return T; } void Des(Node *T) { if(T) { if(T->lchild) Des(T->lchild); if(T->rchild) Des(T->rchild); free(T); T = NULL; } } int main() { int tt, n, q, x; scanf("%d", &tt); Node *tree = NULL; while(tt--) { tree = NULL; scanf("%d", &n); for(int i = 0; i < n; i++) { scanf("%d", &x); tree = Insert(tree, x); } scanf("%d", &q); while(q--) { scanf("%d", &x); Search(tree, x); puts(""); } //Des(tree); } return 0; }
相关文章推荐
- [Apple TV 开发教程] 之三 Apple TV 交互I:焦点
- Eclipse快捷键
- PX4源码开发人员文档(一)——软件架构
- JAVA基础学习(十)--异常、包
- [Unity3D]Unity3D游戏开发Lua随着游戏的债券(在)
- FL2440字符设备驱动开发之查询按键
- 09 java.lang.Runtime
- UITableView 中NSIndexPath
- 华为机考样题:记票统计
- C++Primer第五版 3.5.3节练习
- C++Primer第五版 3.5.2节练习
- 英语中那些缺钱的表达~
- Lync 2010 标准版之简介(一)
- 编程就像讲故事
- 笔试题基础(第四篇
- MAC中安卓开发环境的下载(转)
- linux shell — 1.命令的执行方式、man page 和关机
- linux软RAID
- GMF项目开发环境及基本步骤
- 蛇形矩阵