C++模板编程:二叉树类模板的实现
1. 模板与参数化类型概述
在C++中,模板最初被称为参数化类型。“参数化”是因为它们从模板定义中提取出来,“类型”则是因为每个类或函数模板通常会根据所操作或包含的一个或一组类型而变化,实际类型由用户后续指定。后来,名称被改为更通用的“模板”,单个模板定义可根据用户指定的值或类型自动生成函数或类的唯一实例。
虽然我们广泛使用过类模板,如 vector 和 string 类,但还未自己实现过。接下来将实现一个二叉树类模板。
2. 二叉树基础
- 二叉树结构 :树由节点和连接节点的边(或链接)组成。二叉树中,每个节点有两个链接,通常称为左子节点和右子节点。树有一个根节点,每个左子节点或右子节点本身可以作为子树的根。没有子节点的节点称为叶节点。
- 二叉树实现类 :我们的二叉树实现包含两个类,
BinaryTree类持有指向根节点的指针,BTnode辅助类持有实际值以及左右子节点的链接。我们对节点值的类型进行参数化。 - 二叉树操作 :
BinaryTree必须支持插入和删除元素、查找元素是否存在、清除所有树元素,以及使用三种遍历算法(中序、前序、后序)打印树。
3. 二叉树插入示例
在我们的实现中,插入到空树的第一个值成为根节点。后续插入的值,小于根节
超级会员免费看
订阅专栏 解锁全文
791

被折叠的 条评论
为什么被折叠?



