C++二叉树的实现
Posted 小河沟大河沟
tags:
篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了C++二叉树的实现相关的知识,希望对你有一定的参考价值。
C++实现二叉查找树
啥是二叉查找树
在数据结构中,有一个奇葩的东西,说它奇葩,那是因为它重要,这就是树。而在树中,二叉树又是当中的贵族。二叉树的一个重要应用是它们在查找中的应用,于是就有了二叉查找树。 使二叉树成为一颗二叉查找树,需要满足以下两点:
- 对于树中的每个节点X,它的左子树中所有项的值都要小于X中的项;
- 对于树中的每个节点Y,它的右子树中所有项的值都要大于Y中的项。
二叉查找树的基本操作
以下是对于二叉查找树的基本操作定义类,然后慢慢分析是如何实现它们的。
template<class T>
class BinarySearchTree
{
public:
// 构造函数,初始化root值
BinarySearchTree() : root(NULL){}
// 析构函数,默认实现
~BinarySearchTree() {}
// 查找最小值,并返回最小值
const T &findMin() const;
// 查找最大值,并返回最大值
const T &findMax() const;
// 判断二叉树中是否包含指定值的元素
bool contains(const T &x) const;
// 判断二叉查找树是否为空
bool isEmpty() const { return root ? false : true; }
// 打印二叉查找树的值
void printTree() const;
// 向二叉查找树中插入指定值
void insert(const T &x);
// 删除二叉查找树中指定的值
void remove(const T &x);
// 清空整个二叉查找树
void makeEmpty() const;
private:
// 指向根节点
BinaryNode<T> *root;
void insert(const T &x, BinaryNode<T> *&t) const;
void remove(const T &x, BinaryNode<T> *&t) const;
BinaryNode<T> *findMin(BinaryNode<T> *t) const;
BinaryNode<T> *findMax(BinaryNode<T> *t) const;
bool contains(const T &x, BinaryNode<T> *t)