二叉搜索树之蒜头君的新技能
来源:互联网 发布:云计算架构师 技术栈 编辑:程序博客网 时间:2024/04/29 01:42
蒜头君刚学会一项新技能——数据结构之二叉查找树。蒜头君想复习下刚学的知识,于是他找来一个序列,从序列第一个数开始,依次插入到二叉查找树里。蒜头君一边回忆刚学的知识,按照左孩子权值小,右孩子权值大的口诀,不一会儿就建立起了一棵二叉查找树。
现在蒜头君想来考考聪明的你:每个结点的左右孩子权值分别是什么?
输入格式
第一行输入一个正整数 N(1≤N≤1000)N (1 \leq N \leq 1000)N(1≤N≤1000),代表序列里元素个数。
第二行输入 NNN 个正整数,代表序列a
的 NNN 个元素 (0≤ai≤10000)(0 \leq a_i \leq 10000)(0≤ai≤10000),保证序列里的元素值互不相同。
输出格式
请按格式a(b, c)
,输出引号之间的内容,a
代表每个结点的权值,b
代表其左孩子结点权值,c
代表右孩子结点权值,如果孩子结点为空,则输出#
代替。一个结点输出一行,按结点的权值从小到大输出。注意输出,
后面的空格。
样例输入
52 5 3 1 4
样例输出
1(#, #)2(1, 5)3(#, 4)4(#, #)5(3, #)#include<iostream>using std::endl;using std::cout;using std::cin;class Node{public:int data;Node* rchild,* lchild; Node(int _data) { data = _data; rchild = NULL; lchild = NULL;} ~Node() { if(rchild != NULL) { delete rchild;}if(lchild != NULL){delete lchild;}}void insert(int value){if(data == value){return;}else if(value > data) { if(rchild == NULL) { rchild = new Node(value);}else{rchild->insert(value);}}else{if(lchild == NULL){lchild = new Node(value);}else{lchild->insert(value);}}}Node* search(int value){if(data == value){return this;}else if(value > data){if(rchild == NULL){return NULL;}else{ return rchild->search(value);}}else{if(lchild == NULL){return NULL;}else{return lchild->search(value);}}}};class BinaryTree{private:Node* root;public:BinaryTree(){root = NULL;}~BinaryTree(){if(root != NULL){delete root;}}void insert(int value){if(root == NULL){root = new Node(value);}else{ root->insert(value); }}void output(int value){Node* temp = root->search(value);if(temp->rchild == NULL){if(temp->lchild == NULL){cout << value << "(#, #)";}else{cout << value << "(" << temp->lchild->data << ", #)";}}else{if(temp->lchild == NULL){cout << value << "(#, " << temp->rchild->data << ")"; }else{cout << value << "(" << temp->lchild->data << ", " << temp->rchild->data << ")";}}}};int main(){int num;cin >> num;int* list = new int[num];BinaryTree a;for(int i = 0; i < num; ++i){cin >> list[i]; a.insert(list[i]);}for(int i = 0; i < num; ++i){ for(int j = num - 1; j > i; --j){ if(list[j] < list[j - 1]){ int temp = list[j];list[j] = list[j - 1];list[j - 1] = temp;}}}for(int i = 0; i < num; ++i){a.output(list[i]);cout << endl;}return 0;}
0 0
- 二叉搜索树之蒜头君的新技能
- 蒜头君的树
- 蒜头君的树
- 蒜头君的坐骑
- 蒜头君的兔子
- 蒜头君的排序
- 深度搜索之蒜头学算术
- 蒜头君的玩具娃娃
- 基础算法之“蒜头君采摘苹果”
- 计蒜客 蒜头君的随机数,造房子
- 暴力搜索---新技能get
- 二叉树之二叉搜索树
- 二叉树之搜索树
- 找工作之“二叉搜索树”
- 数据结构之二叉搜索树
- 数据结构之二叉搜索树
- 数据结构之二叉搜索树
- 数据结构之二叉搜索树
- 使用qt creator打包qt应用程序
- StackView(堆视图的使用)
- Verilog学习笔记3:解决ModelSim闪退的问题
- getClass( )函数与Xxx类.class
- hihocoder 135周
- 二叉搜索树之蒜头君的新技能
- 寒假学习之stm32(7)-----通用定时器
- 2.Python的输入输出
- 九度OJ-1108-堆栈的使用
- zabbix部署
- 更改Visual Studio蓝色波浪线颜色
- 欢迎使用CSDN-markdown编辑器
- Python学习笔记(一)——Hello World
- JavaScript 雷达