二叉排序树(Binary Sort Tree),又被称为二叉查找树,它是一棵空树,或是具有以下性质的树:
①若它的左子树不为空,则它的左子树上的所有结点的值小于根节点的值;
②若它的右子树不为空,则它的右子树上的所有结点的值大于根节点的值;
③它的左右子树也是二叉排序树;
c++实现
#ifndef BST_H_
#define BST_H_
#include <stack>
using namespace std;
#define NULL 0
template<typename T>
struct BSTnode
{
T m_data; //关键字
BSTnode<T> *m_left; //左孩子指针
BSTnode<T> *m_right; //右孩子指针
};
template<typename T>
class BSTree
{
public:
BSTree(T data=NULL);
~BSTree();
bool SearchTree(BSTnode<T> *root, T key, BSTnode<T> *parent, BSTnode<T> *&place);
BSTnode<T> *& Getroot();
bool InsertTree(T key);
bool DeleteTree(BSTnode<T> * & place);
bool DeleteBST(BSTnode<T> *&root, T key);
void DestoryTree(BSTnode<T> *root);
void InOrderTraverse(BSTnode<T>* node);
//中序遍历
void InOrderTraverse2();
//非递归中序遍历
private:
BSTnode<T> *m_root;
};
template<typename T>
BSTree<T>::BSTree(T data)
{
m_root = new BSTnode<T>;
m_root->m_data = data;
m_root->m_left =