C++ 二叉搜索树原理及其实现
首先是概念: 二叉搜索树又称二叉排序树,它具有以下的性质: 若是左子树不为空,则左子树上所有节点的值小于根节点的值 若是右子树不为空,则右子树上所有结点的值大于根节点的值 二叉搜索树的左右子树也是二叉搜索树 二叉搜索树的中序排列是一个有序数列 再下来是它的实现 首先是构造节点: template<class K> struct BStreeNode{ BStreeNode(const K& date = K()) //节点的定义 :leftC(nullptr), // 初始化 rightC(nullptr), date_(date) {} BStreeNode<K> *leftC; //左孩子 BStreeNode<K> *rightC; //右孩子 K date_; }; 二叉搜索树类的实现: template<class K> class BStree{ typedef BStreeNode<K> BsNode; public: BStree() : _root(nullptr) {} BsNode* Find(const K& date){ //查找节点 BsNode* pNode = _root; while (pNode){ if (pNode->date_ == date){ return pNode; } else if (pNode->date_ > date){