C++模版树的建立
来源:互联网 发布:iphone软件灰色删不掉 编辑:程序博客网 时间:2024/06/14 06:59
头文件:
#ifndef TREE_H#define TREE_Hnamespace wyp{template<class T>class SearchTree;template<class T>class TreeNode{public:TreeNode() : data(NULL){}TreeNode(T data, TreeNode<T> *left, TreeNode<T> *right) : data(data), left(left), right(right){} friend class SearchTree<T>;private:T data;TreeNode<T> *left;TreeNode<T> *right;};template<class T>class SearchTree{public:SearchTree() : root(NULL){}virtual ~SearchTree();void insert(T item);bool inTree(T item) const;void inorderShow() const;private:void insert(T item, TreeNode<T> *& subTreeRoot);bool inTree(T item, TreeNode<T> *subTreeRoot) const;void deleteSubTree(TreeNode<T> *&subTreeRoot); void inorderShow(TreeNode<T> *subTreeRoot) const;TreeNode<T> *root;};}#endif
实现:
#include "tree.h"#include <iostream>using namespace std;namespace wyp{template<class T>void SearchTree<T>::insert(T item, TreeNode<T> *& subTreeRoot){if(subTreeRoot == NULL){subTreeRoot = new TreeNode<T>(item, NULL, NULL);}else if(item < subTreeRoot->data){insert(item, subTreeRoot->left);}else{insert(item, subTreeRoot->right);}}template<class T>void SearchTree<T>::insert(T item){insert(item, root);}template<class T>bool SearchTree<T>::inTree(T item, TreeNode<T> *subTreeRoot) const{if(subTreeRoot == NULL){return false;}else if(subTreeRoot->data == item){return true;}else if(subTreeRoot->data > item){inTree(item, subTreeRoot->right);}else{inTree(item, subTreeRoot->left);}}template<class T>bool SearchTree<T>::inTree(T item) const{inTree(item, root);}template<class T>void SearchTree<T>::deleteSubTree(TreeNode<T> *&subTreeRoot){if(subTreeRoot != NULL){deleteSubTree(subTreeRoot->left);deleteSubTree(subTreeRoot->right);delete subTreeRoot;subTreeRoot = NULL;}}template<class T>void SearchTree<T>::inorderShow(TreeNode<T> *subTreeRoot) const{if(subTreeRoot != NULL){inorderShow(subTreeRoot->left);cout << subTreeRoot->data << "\t";inorderShow(subTreeRoot->right);}}template<class T>void SearchTree<T>::inorderShow() const{inorderShow(root);}template<class T>SearchTree<T>::~SearchTree(){deleteSubTree(root);}}
利用:
#include <iostream>#include "tree.h"#include "tree.cpp"using namespace std;using wyp::SearchTree;int main(){SearchTree<int> t;cout << "Enter the number \n";int next;cin >> next;while(next >= 0){t.insert(next);cin >> next;}cout << "Show tree\n";t.inorderShow();cout << endl;return 0;}
- C++模版树的建立
- C语言树的建立
- VIM 使用 load_template 建立自己的模版文件
- 关于“树”的模版
- AVL树的建立完整C代码
- Socket的建立 c#
- 通用c/c++的Makefile模版
- 实现动态建立DataList模版
- c语言-单链表的建立
- C语言 堆栈的建立
- 数据结构 树 二叉树的建立及遍历 C语言版
- 递归实现二叉树的建立及前中后序遍历 c
- 递归实现Avl树的删除、建立(C++)
- 二叉树的建立与递归遍历C语言版
- (C++)二叉树的建立与递归方式遍历
- 二叉树的建立以及遍历C/C++
- 线索二叉树的建立与遍历C/C++
- C语言中树的建立和遍历
- 二级指针与二级数组汇总
- Eric5 IDE for Python在window是下安装
- 黑马程序员-反射的常用方法
- Objective-c Property define
- 博客开张
- C++模版树的建立
- Android Aidl实现进程间通信
- http://acm.hdu.edu.cn/showproblem.php?pid=1394&&线段树之求逆序数
- 黑马程序员-集合类继承树
- oracle 中禁用所有外键关联
- centos下安装openvswitch
- dede 时间标签,自定义样式
- 小米手机真的是抢手货吗?小米手机里就没有流氓软件吗?看看社区老百姓的看法
- 内部类