二叉树的功能代码
#include<iostream>
using namespace std;
//二叉树结点定义
template<typename T>
struct TreeNode {
T val;//定义了一个类型为T的成员变量val,用于存储树节点的值
TreeNode* left;//定义了一个指向TreeNode类型的指针成员变量left,用于存储左子节点的指针
TreeNode* right;//定义了一个指向TreeNode类型的指针成员变量right,用于存储右子节点的指针
TreeNode():val(0),left(NULL),right(NULL){}//定义了一个无参的构造函数,在创建树节点时将val、left和right都初始化为NULL,并将val的值设置为0
TreeNode(T x):val(x),left(NULL),right(NULL){}//定义了一个带参的构造函数,在创建树节点时将传入的参数赋值给val,并将left和right都初始化为NULL
};
//二叉树 类的定义
template<typename T>
class Tree {
private:
TreeNode<T>* nodes;//二叉树所有结点的结点池
TreeNode<T>* root;//根节点
size_t nodeSize;//总共有多少个结点(分配在堆上的数组)
TreeNode<T>* Create(T a[], int size, int nodeId, T nullNode);//1.模板函数声明,用于创建一个具有类型为T的树,是用于递归调用的
void visit(TreeNode<T>* node);//2.成员函数声明,用于访问树结点(这里的实现就是打印节点的值)
void preOrder(TreeNode<T>* node);//3.成员函数声明,用于前序遍历树结点
void inOrder(TreeNode<T>* node);//4.成员函