编程日志5.10
二叉搜索树的基础代码
#include<iostream>
using namespace std;
//二叉搜索树节点定义
template<typename T>
struct TreeNode {
T val;//一个类型为T的成员变量val,用于存储树节点的值
TreeNode* left;//left、right两个指针类型的成员变量,分别用于指向树节点的左子节点和右子节点
TreeNode* right;
//这是一个无参的构造函数,用于初始化树节点的成员变量。在这个构造函数中,将节点的值设置为0,左子节点和右子节点都设置为NULL。
TreeNode():val(0),left(NULL),right(NULL){}
//这是一个有参的构造函数,用于初始化树节点的成员变量。在这个构造函数中,将节点的值设置为给定的参数x,左子节点和右子节点都设置为NULL。
TreeNode(T x):val(x),left(NULL),right(NULL){}
};
//二叉搜索树 类定义
template<typename T>
class BinarySearchTree {
private://定义私有成员变量/函数
TreeNode<T>* root;//1.用于存储二叉搜索树的根节点指针
TreeNode<T>* insertNode(TreeNode<T>* node, T value);//2.用于向二叉搜索树中插入一个结点
TreeNode<T>* removeNode(TreeNode<T>* node, T value);//3.用于从二叉搜索树中删除一个结点
bool searchNode(TreeNode<T>* node, T value);//4.用于在二叉搜索树中搜索结点是否存在
void inOrder(TreeNode<T>* node);//5.用于按照中序遍历方式遍历二叉树
public://定义公共函数
BinarySearchTree():root(NULL){}//6.构造函数,用于初始化二叉搜索树的根节点为NULL
~BinarySearchTree();//7.析构函数,用于释放动态分配的内存
void insert(T value) {//8.用于向二叉搜索树中插入一个值
root = insertNode(root, value);
}
void