BST_常用操作
来源:互联网 发布:ubuntu 如何安装软件 编辑:程序博客网 时间:2024/06/08 11:06
推荐慕课网,刘宇波老师《算法与数据结构》链接:http://coding.imooc.com/class/71.htmlBST_常用操作 课堂笔记#include <iostream>using namespace std;template<typename Key,typename Value>class BST{ private: struct Node{ Key key; Value value; Node *left; Node *right; Node(Key key,Value value){ this->key = key; this->value = value; this->left = this->right = NULL; } }; Node *root; int count;public: BST(){ root = NULL; count = 0; } ~BST(){ destroy(); } int size(){ return count; } bool isEmpty(){ return count == 0; } void insert(Key key,Value value){ root = insert(root,key,value); } bool contain(Key key){ return contain(root,key); } Value* serach(Key key){ return serach(root,key); } void preOrder(){ preOrder(root); } void inOrder(){ inOrder(root); } void postOrder(){ postOrder(root); }private: Node* insert(Node* node,Key key,Value value){ if(node == NULL){ count++; return new Node(key,value); } if(key == node->key) node->value = value; else if(key < node->key) node->left = insert(node->left,key,value); else node->right = insert(node->right,key,value); return node; } bool contain(Node* node,Key key){ if(node == NULL) return false; if(key == node->key) return true; else if(key < node->key) return contian(node->left,key); else return contian(node->right,key); } Value* serach(Node* node,Key key){ if(node == NULL) return NULL; if(key == node->key) return &(node->value); else if(key < node->value) return serach(node->left,key); else return serach(node->right,key); } void preOrder(Node* node){ if(node != NULL){ cout<<node->key<<endl; preOrder(node->left); preOrder(node->right); } } void inOrder(Node* node){ if(node != NULL){ inOrder(node->left); cout<<node->key<<endl; inOrder(node->right); } } void postOrder(Node* node){ if(node != NULL){ postOrder(node->left); postOrder(node->right); cout<<node->key<<endl; } } void destroy(Node* node){ if(node != NULL){ destroy(node->left); destroy(node->right); delete node; count -- ; } }};int main(){ return 0;}
阅读全文
0 0
- BST_常用操作
- 常用操作
- 常用操作
- 常用操作
- 常用操作
- 常用操作
- 常用操作
- 常用操作
- 常用操作
- 常用操作
- 常用操作
- 常用操作
- 常用操作
- 常用操作
- oracle 常用操作/常用查询
- mysql常用操作(数据库常用操作)
- sql常用操作(MySQL常用操作)
- MySQL常用操作基本操作
- Spring Bean 的 scope属性为何要设置为prototype
- Linux进程管理
- HDU---1875 畅通工程再续 最小生成树 (kruskal)
- ios视频循环播放实现
- perl 每次需要输入验证码 登录网站
- BST_常用操作
- 一、android XML资源文件详解 —— 从物理上分析
- Android按键事件传递流程
- Manifest provider标签冲突
- Adobe Photoshop Lightroom 5.7.1下载 中文安装完整版
- Hive数据仓库与数据库的异同
- js排序
- ios中修改自定义PickerView的字体颜色
- Session.invalidate与sessiont.removeAtribute()学习比较