算法练习之二叉查找树 C++实现
2011-07-08 15:23
716 查看
/////////////////Tnode.h//////////////// class TNode { public: ////methods TNode(void); TNode(int data); ~TNode(void); /////members TNode* left; TNode* right; int data; }; /////////TNode.cpp///////////// TNode::TNode(void) { TNode::data=0; TNode::left=NULL; TNode::right=NULL; } TNode::TNode(int data) { TNode::data = data; TNode::left=NULL; TNode::right=NULL; } TNode::~TNode(void) { } //////////////////////end////////////////// /////////////////BTree.h////////////////// class BTree{ public: ////methods void InsertNode(TNode* node); void PrintNode(TNode* head); TNode* FindValue(TNode* head,int value); TNode* Find(TNode* head,TNode* node); bool IsEmpty(TNode* head); ////members TNode* head; }; //////////////////BTree.cpp//////////////// #include "stdafx.h" #include "Node.h" #include <iostream> /////插入节点 void BTree::InsertNode(TNode *node){ if(this->IsEmpty(node)){ return; } TNode* current = this->head; while(current!=NULL){ if(node->data < current->data){ if(current->left != NULL){ current=current->left; } else{ current->left = new TNode(node->data); break; } } else{ //current=current->right; if(current->right != NULL){ //current->left = new TNode(77); current=current->right; } else{ current->right = new TNode(node->data); break; } } } } bool BTree::IsEmpty(TNode* head){ return head==NULL; } /////使用中序遍历,这样可以保证打印出来的是排序好的 void BTree::PrintNode(TNode *currentNode){ using namespace std; if(currentNode != NULL) { this->PrintNode(currentNode->left); cout<<currentNode->data<<" "; this->PrintNode(currentNode->right); } } /////查找节点 TNode* BTree::FindValue(TNode* current,int value){ while(current!=NULL){ if(current->data == value){ return current; } else if(current->data < value){ current = current->right; } else{ current=current->left; } } return NULL; } TNode* BTree::Find(TNode* current,TNode* node){ return this->FindValue(current,node->data); }
相关文章推荐
- 【算法导论】二叉查找树的操作C++实现
- C/C++编程小练习 计算10亿之内的素数和(合数筛选算法实现)
- [算法导论]2.2节编程练习C++实现
- 一些算法的代码练习(c++实现,编译环境xcode)
- [算法导论]2.1节编程练习C++实现
- 20170219C++项目班02_02递归下降算法/解析器/Scanner实现
- 冒泡算法之C++和Java实现
- 二叉查找树的c++实现
- 二分查找算法的C/C++实现
- 一个无聊男人的疯狂《数据结构与算法分析-C++描述》学习笔记 习题2.8 随机数组的三种生成算法(补) 将bash的实现翻译成比较纯正的bash风格
- 十大基础应用算法及C++实现(一)----快速排序算法
- 【算法学习】B-Tree编程实现(C++模板类封装)
- 算法-最长子序列和C/C++实现(三个复杂度)
- 高斯模糊算法的 C++ 实现
- 编译原理(十) SLR文法分析法(算法原理和C++实现)
- C++实现Chi-square 特征词选择算法
- 对sql查询语句组合查询的通用实现算法(c++版,java版)
- 用C++实现warshall的算法
- C++实现二叉树的镜像操作(18)---《那些奇怪的算法》
- 【面试题精选】1-构造一个二叉查找树-C++实现