二叉搜索树(BST树)的简单实现 #include <stdlib.h>
二叉搜索树(BST树)的简单实现 template<typename T>
二叉搜索树(BST树)的简单实现 class CBinSTree;
二叉搜索树(BST树)的简单实现
二叉搜索树(BST树)的简单实现 template <typename T>
二叉搜索树(BST树)的简单实现 class CTreeNode
二叉搜索树(BST树)的简单实现
二叉搜索树(BST树)的简单实现
二叉搜索树(BST树)的简单实现 {//树节点类
二叉搜索树(BST树)的简单实现 public:
二叉搜索树(BST树)的简单实现 CTreeNode(const T& item,CTreeNode<T>* lptr = NULL,CTreeNode<T>* rptr = NULL):data(item),left(lptr),right(rptr)
二叉搜索树(BST树)的简单实现
二叉搜索树(BST树)的简单实现
二叉搜索树(BST树)的简单实现 {
二叉搜索树(BST树)的简单实现 }
二叉搜索树(BST树)的简单实现 CTreeNode<T>* Left(void)
二叉搜索树(BST树)的简单实现
二叉搜索树(BST树)的简单实现
二叉搜索树(BST树)的简单实现
二叉搜索树(BST树)的简单实现 return left;
二叉搜索树(BST树)的简单实现
二叉搜索树(BST树)的简单实现 CTreeNode<T>* Right(void)
二叉搜索树(BST树)的简单实现
二叉搜索树(BST树)的简单实现
二叉搜索树(BST树)的简单实现
二叉搜索树(BST树)的简单实现 return right;
二叉搜索树(BST树)的简单实现
二叉搜索树(BST树)的简单实现 friend class CBinSTree<T>;
二叉搜索树(BST树)的简单实现
二叉搜索树(BST树)的简单实现 T data;//数据
二叉搜索树(BST树)的简单实现 private:
二叉搜索树(BST树)的简单实现 CTreeNode<T>* left;//左子树
二叉搜索树(BST树)的简单实现 CTreeNode<T>* right;//右子树
二叉搜索树(BST树)的简单实现 };
二叉搜索树(BST树)的简单实现
二叉搜索树(BST树)的简单实现
二叉搜索树(BST树)的简单实现 class CBinSTree
二叉搜索树(BST树)的简单实现
二叉搜索树(BST树)的简单实现
二叉搜索树(BST树)的简单实现 {//二叉搜索树类
二叉搜索树(BST树)的简单实现
二叉搜索树(BST树)的简单实现 CBinSTree();
二叉搜索树(BST树)的简单实现 virtual ~CBinSTree();
二叉搜索树(BST树)的简单实现 CBinSTree(const CBinSTree<T>& tree);
二叉搜索树(BST树)的简单实现 CBinSTree<T>& operator = (const CBinSTree<T>& rhs);
二叉搜索树(BST树)的简单实现 CTreeNode<T>* FindNode(const T& item,CTreeNode<T>* &parent)const;//寻找节点
二叉搜索树(BST树)的简单实现 void PrintTree();//前序遍历树(非递归)
二叉搜索树(BST树)的简单实现 void ClearTree();//清空树
二叉搜索树(BST树)的简单实现 void Insert(const T& item);//插入数据
二叉搜索树(BST树)的简单实现 void Delete(const T& item);//删除数据
二叉搜索树(BST树)的简单实现 bool Contains(const T& item);//是否包含数据
二叉搜索树(BST树)的简单实现 CTreeNode<T>* FindMin()const;//找最小值
二叉搜索树(BST树)的简单实现 CTreeNode<T>* FindMax()const;//找最大值
二叉搜索树(BST树)的简单实现
二叉搜索树(BST树)的简单实现 protected:
二叉搜索树(BST树)的简单实现 //辅助函数区
二叉搜索树(BST树)的简单实现 CTreeNode<T>* GetTreeNode(const T& item,CTreeNode<T>* lptr=NULL,CTreeNode<T>* rptr=NULL);//分配树节点
二叉搜索树(BST树)的简单实现 void FreeTreeNode(CTreeNode<T>* p);//释放树节点
二叉搜索树(BST树)的简单实现 void DeleteTree(CTreeNode<T>* t);//删除树
二叉搜索树(BST树)的简单实现 CTreeNode<T>* CopyTree(CTreeNode<T>* t);//拷贝树
二叉搜索树(BST树)的简单实现
二叉搜索树(BST树)的简单实现 CTreeNode<T> *root;//二叉搜索树树根
二叉搜索树(BST树)的简单实现 int size;//树节点个数
二叉搜索树(BST树)的简单实现
二叉搜索树(BST树)的简单实现
二叉搜索树(BST树)的简单实现
二叉搜索树(BST树)的简单实现 #include "stdafx.h"
二叉搜索树(BST树)的简单实现 #include "BinSTree.h"
二叉搜索树(BST树)的简单实现 #include <iostream>
二叉搜索树(BST树)的简单实现 #include <stack>
二叉搜索树(BST树)的简单实现 using namespace std;
二叉搜索树(BST树)的简单实现
二叉搜索树(BST树)的简单实现
二叉搜索树(BST树)的简单实现 /**///////////////////////////////////////////////////////////////////////
二叉搜索树(BST树)的简单实现 // Construction/Destruction
二叉搜索树(BST树)的简单实现
二叉搜索树(BST树)的简单实现
二叉搜索树(BST树)的简单实现
二叉搜索树(BST树)的简单实现 CBinSTree<T>::CBinSTree()
二叉搜索树(BST树)的简单实现
二叉搜索树(BST树)的简单实现
二叉搜索树(BST树)的简单实现
二叉搜索树(BST树)的简单实现 this->root = NULL;
二叉搜索树(BST树)的简单实现 this->size = 0;
二叉搜索树(BST树)的简单实现 }
二叉搜索树(BST树)的简单实现
二叉搜索树(BST树)的简单实现 CBinSTree<T>::CBinSTree(const CBinSTree<T>& tree)
二叉搜索树(BST树)的简单实现
二叉搜索树(BST树)的简单实现
二叉搜索树(BST树)的简单实现
二叉搜索树(BST树)的简单实现 root = this->CopyTree(tree.root);
二叉搜索树(BST树)的简单实现 this->size = tree.size;
二叉搜索树(BST树)的简单实现
二叉搜索树(BST树)的简单实现
二叉搜索树(BST树)的简单实现 CBinSTree<T>::~CBinSTree()
二叉搜索树(BST树)的简单实现
二叉搜索树(BST树)的简单实现
二叉搜索树(BST树)的简单实现
二叉搜索树(BST树)的简单实现 this->ClearTree();
二叉搜索树(BST树)的简单实现
二叉搜索树(BST树)的简单实现
二叉搜索树(BST树)的简单实现 CBinSTree<T>& CBinSTree<T>::operator = (const CBinSTree<T>& rhs)
二叉搜索树(BST树)的简单实现
二叉搜索树(BST树)的简单实现
二叉搜索树(BST树)的简单实现
二叉搜索树(BST树)的简单实现 if(this==&rhs)
二叉搜索树(BST树)的简单实现 return *this;
二叉搜索树(BST树)的简单实现
二叉搜索树(BST树)的简单实现 root = this->CopyTree(rhs.root);
二叉搜索树(BST树)的简单实现 size = rhs.size;
二叉搜索树(BST树)的简单实现 return *this;
二叉搜索树(BST树)的简单实现
二叉搜索树(BST树)的简单实现
二叉搜索树(BST树)的简单实现 CTreeNode<T>* CBinSTree<T>::GetTreeNode(const T& item,CTreeNode<T>* lptr,CTreeNode<T>* rptr)
二叉搜索树(BST树)的简单实现
二叉搜索树(BST树)的简单实现
二叉搜索树(BST树)的简单实现
二叉搜索树(BST树)的简单实现 CTreeNode<T>* p;
二叉搜索树(BST树)的简单实现 p = new CTreeNode<T>(item,lptr,rptr);
二叉搜索树(BST树)的简单实现 if(p==NULL)
二叉搜索树(BST树)的简单实现
二叉搜索树(BST树)的简单实现
二叉搜索树(BST树)的简单实现
二叉搜索树(BST树)的简单实现 cerr<<"分配内存失败!"<<endl;
二叉搜索树(BST树)的简单实现 exit(1);
二叉搜索树(BST树)的简单实现
二叉搜索树(BST树)的简单实现 return p;
二叉搜索树(BST树)的简单实现
二叉搜索树(BST树)的简单实现
二叉搜索树(BST树)的简单实现 CTreeNode<T>* CBinSTree<T>::FindMin()const
二叉搜索树(BST树)的简单实现
二叉搜索树(BST树)的简单实现
二叉搜索树(BST树)的简单实现
二叉搜索树(BST树)的简单实现 CTreeNode<T> *t = root;
二叉搜索树(BST树)的简单实现 while(t->left!=NULL)
二叉搜索树(BST树)的简单实现
二叉搜索树(BST树)的简单实现
二叉搜索树(BST树)的简单实现
二叉搜索树(BST树)的简单实现 t = t->left;
二叉搜索树(BST树)的简单实现
二叉搜索树(BST树)的简单实现 return t;
二叉搜索树(BST树)的简单实现
二叉搜索树(BST树)的简单实现
二叉搜索树(BST树)的简单实现 CTreeNode<T>* CBinSTree<T>::FindMax()const
二叉搜索树(BST树)的简单实现
二叉搜索树(BST树)的简单实现
二叉搜索树(BST树)的简单实现
二叉搜索树(BST树)的简单实现
二叉搜索树(BST树)的简单实现 while(t->right!=NULL)
二叉搜索树(BST树)的简单实现
二叉搜索树(BST树)的简单实现
二叉搜索树(BST树)的简单实现
二叉搜索树(BST树)的简单实现 t = t->right;
二叉搜索树(BST树)的简单实现
二叉搜索树(BST树)的简单实现
二叉搜索树(BST树)的简单实现
二叉搜索树(BST树)的简单实现
二叉搜索树(BST树)的简单实现 bool CBinSTree<T>::Contains(const T& item)
二叉搜索树(BST树)的简单实现
二叉搜索树(BST树)的简单实现
二叉搜索树(BST树)的简单实现
二叉搜索树(BST树)的简单实现 CTreeNode<T> *p;
二叉搜索树(BST树)的简单实现 return (this->FindNode(item,p)!=NULL);
二叉搜索树(BST树)的简单实现
二叉搜索树(BST树)的简单实现
二叉搜索树(BST树)的简单实现 CTreeNode<T>* CBinSTree<T>::CopyTree(CTreeNode<T>* t)
二叉搜索树(BST树)的简单实现
二叉搜索树(BST树)的简单实现
二叉搜索树(BST树)的简单实现
二叉搜索树(BST树)的简单实现 CTreeNode<T> *newnode,*newlptr,*newrptr;
二叉搜索树(BST树)的简单实现 if(t==NULL)
二叉搜索树(BST树)的简单实现 return NULL;
二叉搜索树(BST树)的简单实现 if(t->Left()!=NULL)
二叉搜索树(BST树)的简单实现 newlptr = CopyTree(t->Left());
二叉搜索树(BST树)的简单实现 else
二叉搜索树(BST树)的简单实现 newlptr = NULL;
二叉搜索树(BST树)的简单实现 if(t->Right()!=NULL)
二叉搜索树(BST树)的简单实现 newrptr = CopyTree(t->Right());
二叉搜索树(BST树)的简单实现
二叉搜索树(BST树)的简单实现 newrptr = NULL;
二叉搜索树(BST树)的简单实现 newnode = GetTreeNode(t->data,newlptr,newrptr);
二叉搜索树(BST树)的简单实现 return newnode;
二叉搜索树(BST树)的简单实现
二叉搜索树(BST树)的简单实现
二叉搜索树(BST树)的简单实现 void CBinSTree<T>::FreeTreeNode(CTreeNode<T>* p)
二叉搜索树(BST树)的简单实现
二叉搜索树(BST树)的简单实现
二叉搜索树(BST树)的简单实现
二叉搜索树(BST树)的简单实现 delete p;
二叉搜索树(BST树)的简单实现 p = NULL;
二叉搜索树(BST树)的简单实现
二叉搜索树(BST树)的简单实现
二叉搜索树(BST树)的简单实现 void CBinSTree<T>::DeleteTree(CTreeNode<T>* t)
二叉搜索树(BST树)的简单实现
二叉搜索树(BST树)的简单实现
二叉搜索树(BST树)的简单实现
二叉搜索树(BST树)的简单实现 if(t!=NULL)
二叉搜索树(BST树)的简单实现
二叉搜索树(BST树)的简单实现
二叉搜索树(BST树)的简单实现
二叉搜索树(BST树)的简单实现 DeleteTree(t->Left());
二叉搜索树(BST树)的简单实现 DeleteTree(t->Right());
二叉搜索树(BST树)的简单实现 FreeTreeNode(t);
二叉搜索树(BST树)的简单实现
二叉搜索树(BST树)的简单实现
二叉搜索树(BST树)的简单实现
二叉搜索树(BST树)的简单实现 void CBinSTree<T>::ClearTree()
二叉搜索树(BST树)的简单实现
二叉搜索树(BST树)的简单实现
二叉搜索树(BST树)的简单实现
二叉搜索树(BST树)的简单实现 DeleteTree(root);
二叉搜索树(BST树)的简单实现 root = NULL;
二叉搜索树(BST树)的简单实现
二叉搜索树(BST树)的简单实现
二叉搜索树(BST树)的简单实现 CTreeNode<T>* CBinSTree<T>::FindNode(const T& item,CTreeNode<T>* &parent)const
二叉搜索树(BST树)的简单实现
二叉搜索树(BST树)的简单实现
二叉搜索树(BST树)的简单实现
二叉搜索树(BST树)的简单实现
二叉搜索树(BST树)的简单实现 parent = NULL;
二叉搜索树(BST树)的简单实现 while(t!=NULL)
二叉搜索树(BST树)的简单实现
二叉搜索树(BST树)的简单实现
二叉搜索树(BST树)的简单实现
二叉搜索树(BST树)的简单实现 if(item==t->data)
二叉搜索树(BST树)的简单实现 break;
二叉搜索树(BST树)的简单实现 else
二叉搜索树(BST树)的简单实现
二叉搜索树(BST树)的简单实现
二叉搜索树(BST树)的简单实现
二叉搜索树(BST树)的简单实现 parent = t;
二叉搜索树(BST树)的简单实现 if(item<t->data)
二叉搜索树(BST树)的简单实现 t = t->Left();
二叉搜索树(BST树)的简单实现 else
二叉搜索树(BST树)的简单实现 t = t->Right();
二叉搜索树(BST树)的简单实现 }
二叉搜索树(BST树)的简单实现
二叉搜索树(BST树)的简单实现
二叉搜索树(BST树)的简单实现
二叉搜索树(BST树)的简单实现
二叉搜索树(BST树)的简单实现 void CBinSTree<T>::Insert(const T& item)
二叉搜索树(BST树)的简单实现
二叉搜索树(BST树)的简单实现
二叉搜索树(BST树)的简单实现
二叉搜索树(BST树)的简单实现 CTreeNode<T>* t = root,*parent = NULL,*newnode;
二叉搜索树(BST树)的简单实现
二叉搜索树(BST树)的简单实现
二叉搜索树(BST树)的简单实现
二叉搜索树(BST树)的简单实现
二叉搜索树(BST树)的简单实现 parent = t;
二叉搜索树(BST树)的简单实现 if(item<t->data)
二叉搜索树(BST树)的简单实现 t = t->Left();
二叉搜索树(BST树)的简单实现
二叉搜索树(BST树)的简单实现 t = t->Right();
二叉搜索树(BST树)的简单实现
二叉搜索树(BST树)的简单实现 newnode = this->GetTreeNode(item);
二叉搜索树(BST树)的简单实现 if(parent==NULL)
二叉搜索树(BST树)的简单实现 root = newnode;
二叉搜索树(BST树)的简单实现 else if(item<parent->data)
二叉搜索树(BST树)的简单实现 parent->left = newnode;
二叉搜索树(BST树)的简单实现
二叉搜索树(BST树)的简单实现 parent->right = newnode;
二叉搜索树(BST树)的简单实现 size++;
二叉搜索树(BST树)的简单实现
二叉搜索树(BST树)的简单实现
二叉搜索树(BST树)的简单实现 void CBinSTree<T>::Delete(const T& item)
二叉搜索树(BST树)的简单实现
二叉搜索树(BST树)的简单实现
二叉搜索树(BST树)的简单实现
二叉搜索树(BST树)的简单实现 CTreeNode<T> *pDNode,*pRNode,*pParNode;
二叉搜索树(BST树)的简单实现 if((pDNode = this->FindNode(item,pParNode))==NULL)
二叉搜索树(BST树)的简单实现 return;
二叉搜索树(BST树)的简单实现 if(pDNode->left==NULL)
二叉搜索树(BST树)的简单实现 pRNode = pDNode->right;
二叉搜索树(BST树)的简单实现 else if(pDNode->right==NULL)
二叉搜索树(BST树)的简单实现 pRNode = pDNode->left;
二叉搜索树(BST树)的简单实现
二叉搜索树(BST树)的简单实现
二叉搜索树(BST树)的简单实现
二叉搜索树(BST树)的简单实现
二叉搜索树(BST树)的简单实现 CTreeNode<T> *pParOfRNode = pDNode;
二叉搜索树(BST树)的简单实现
二叉搜索树(BST树)的简单实现 while(pRNode->right!=NULL)
二叉搜索树(BST树)的简单实现
二叉搜索树(BST树)的简单实现
二叉搜索树(BST树)的简单实现
二叉搜索树(BST树)的简单实现 pParOfRNode = pRNode;
二叉搜索树(BST树)的简单实现 pRNode = pRNode->right;
二叉搜索树(BST树)的简单实现
二叉搜索树(BST树)的简单实现 if(pParOfRNode==pDNode)
二叉搜索树(BST树)的简单实现
二叉搜索树(BST树)的简单实现
二叉搜索树(BST树)的简单实现
二叉搜索树(BST树)的简单实现 pRNode->right = pDNode->right;
二叉搜索树(BST树)的简单实现
二叉搜索树(BST树)的简单实现
二叉搜索树(BST树)的简单实现
二叉搜索树(BST树)的简单实现
二叉搜索树(BST树)的简单实现
二叉搜索树(BST树)的简单实现 pParOfRNode->right = pRNode->left;
二叉搜索树(BST树)的简单实现 pRNode->left = pDNode->left;
二叉搜索树(BST树)的简单实现
二叉搜索树(BST树)的简单实现
二叉搜索树(BST树)的简单实现
二叉搜索树(BST树)的简单实现 if(pParNode==NULL)
二叉搜索树(BST树)的简单实现 root = pRNode;
二叉搜索树(BST树)的简单实现 else if(pDNode->data<pParNode->data)
二叉搜索树(BST树)的简单实现 pParNode->left = pRNode;
二叉搜索树(BST树)的简单实现
二叉搜索树(BST树)的简单实现 pParNode->right = pRNode;
二叉搜索树(BST树)的简单实现 this->FreeTreeNode(pDNode);
二叉搜索树(BST树)的简单实现 this->size--;
二叉搜索树(BST树)的简单实现
二叉搜索树(BST树)的简单实现
二叉搜索树(BST树)的简单实现
二叉搜索树(BST树)的简单实现 void CBinSTree<T>::PrintTree()
二叉搜索树(BST树)的简单实现
二叉搜索树(BST树)的简单实现
二叉搜索树(BST树)的简单实现
二叉搜索树(BST树)的简单实现 stack<CTreeNode<T>* > s;
二叉搜索树(BST树)的简单实现 CTreeNode<T>* p = root;
二叉搜索树(BST树)的简单实现 while (p!=NULL || !s.empty())
二叉搜索树(BST树)的简单实现
二叉搜索树(BST树)的简单实现
二叉搜索树(BST树)的简单实现
二叉搜索树(BST树)的简单实现 while (p!=NULL) //遍历左子树
二叉搜索树(BST树)的简单实现
二叉搜索树(BST树)的简单实现
二叉搜索树(BST树)的简单实现
二叉搜索树(BST树)的简单实现 cout<<p->data<<endl;
二叉搜索树(BST树)的简单实现 s.push(p);
二叉搜索树(BST树)的简单实现 p=p->Left();
二叉搜索树(BST树)的简单实现 }//endwhile
二叉搜索树(BST树)的简单实现
二叉搜索树(BST树)的简单实现 if (!s.empty())
二叉搜索树(BST树)的简单实现
二叉搜索树(BST树)的简单实现
二叉搜索树(BST树)的简单实现
二叉搜索树(BST树)的简单实现 p=s.top();
二叉搜索树(BST树)的简单实现 s.pop();
二叉搜索树(BST树)的简单实现 p=p->Right(); //通过下一次循环实现右子树遍历
二叉搜索树(BST树)的简单实现 }//endif
二叉搜索树(BST树)的简单实现
二叉搜索树(BST树)的简单实现
二叉搜索树(BST树)的简单实现
二叉搜索树(BST树)的简单实现 // test.cpp : Defines the entry point for the console application.
二叉搜索树(BST树)的简单实现 //
二叉搜索树(BST树)的简单实现
二叉搜索树(BST树)的简单实现
二叉搜索树(BST树)的简单实现 #include "BinSTree.cpp"
二叉搜索树(BST树)的简单实现
二叉搜索树(BST树)的简单实现
二叉搜索树(BST树)的简单实现
二叉搜索树(BST树)的简单实现 CBinSTree<int>* MakeSampleTree()
二叉搜索树(BST树)的简单实现
二叉搜索树(BST树)的简单实现
二叉搜索树(BST树)的简单实现 {//示例BST树
二叉搜索树(BST树)的简单实现 CBinSTree<int> *tree1 = new CBinSTree<int>();
二叉搜索树(BST树)的简单实现 int a = 5;
二叉搜索树(BST树)的简单实现 tree1->Insert(a);
二叉搜索树(BST树)的简单实现 tree1->Insert(30);
二叉搜索树(BST树)的简单实现 tree1->Insert(65);
二叉搜索树(BST树)的简单实现 tree1->Insert(25);
二叉搜索树(BST树)的简单实现 tree1->Insert(35);
二叉搜索树(BST树)的简单实现 tree1->Insert(50);
二叉搜索树(BST树)的简单实现 tree1->Insert(10);
二叉搜索树(BST树)的简单实现 tree1->Insert(28);
二叉搜索树(BST树)的简单实现 tree1->Insert(26);
二叉搜索树(BST树)的简单实现 tree1->Insert(33);
二叉搜索树(BST树)的简单实现 return tree1;
二叉搜索树(BST树)的简单实现
二叉搜索树(BST树)的简单实现
二叉搜索树(BST树)的简单实现 int main(int argc, char* argv[])
二叉搜索树(BST树)的简单实现
二叉搜索树(BST树)的简单实现
二叉搜索树(BST树)的简单实现
二叉搜索树(BST树)的简单实现 CBinSTree<int> *tree1 = MakeSampleTree();
二叉搜索树(BST树)的简单实现 tree1->PrintTree();
二叉搜索树(BST树)的简单实现 std::cout<<"删除节点30:"<<endl;
二叉搜索树(BST树)的简单实现 tree1->Delete(30);
二叉搜索树(BST树)的简单实现
二叉搜索树(BST树)的简单实现 cout<<tree1->Contains(40)<<endl;
二叉搜索树(BST树)的简单实现 CTreeNode<int> *p = tree1->FindMin();
二叉搜索树(BST树)的简单实现 cout<<p->data<<endl;
二叉搜索树(BST树)的简单实现 return 0;
二叉搜索树(BST树)的简单实现
二叉搜索树(BST树)的简单实现