此前写过的数据结构,无论是向量亦或链表,元素之间均存在一个线性次序,故他们都是线性结构(linear structure)。树作为图的一种,同时具有无环性与连通性,只要附加某种约束(例如遍历),即可在树的节点中确定某种线性次序,因此树也被称作半线性结构(semi-linear structure)。
二叉树是树的一种,在树的全体中仅占很小一部分。但是任意一棵树或一座森林都可以转化成一棵二叉树,具体方法是将第一个后代作为左孩子,兄弟作为右孩子,后代的兄弟作为后代的右孩子……直至所有节点完全调整完毕。
以下给出二叉树模板类的定义与接口实现:
BinaryNode模板类
1 |
|
BinaryTree模板类
1 |
|
高度更新
1 | template <typename T> |
节点插入
1 | template <typename T> |
子树接入
1 | template<typename T> |
子树删除
1 | template <typename T> |
子树分离
1 |