📅  最后修改于: 2023-12-03 15:28:48.728000             🧑  作者: Mango
该题目为一道编程题,要求实现一个基于树结构的数据结构,并进行一些基本的操作。
题目要求实现的数据结构为一个基于树结构的结构体,定义如下:
struct TreeNode {
int val;
TreeNode *left;
TreeNode *right;
TreeNode(int x) : val(x), left(NULL), right(NULL) {}
};
其中,val表示节点的信息,left和right分别表示左孩子和右孩子。
在该题目中,需要实现以下接口:
在该接口中,需要向树结构中添加一个新节点,并保证树的结构不变。如果val在树中已经存在,则不需要做任何操作。
void addNode(int val);
在该接口中,需要删除树中值为val的节点,并保证树的结构不变。如果不存在值为val的节点,则不需要做任何操作。
void deleteNode(int val);
在该接口中,需要查找树中是否存在值为val的节点。如果存在,则返回该节点;否则,返回NULL。
TreeNode* findNode(int val);
在该接口中,需要对树进行遍历,并打印出每个节点的信息。
void printTree();
该题目可以通过实现一个二叉查找树来完成。在该树中,每个节点的值大于其左子树的所有节点的值,小于其右子树的所有节点的值。因此,可以利用二叉查找树的特性来实现上述接口。
具体实现细节详见代码实现。