📜  门|门CS 2008 |第 80 题(1)

📅  最后修改于: 2023-12-03 15:28:48.728000             🧑  作者: Mango

题目说明:门|门CS 2008 |第 80 题

该题目为一道编程题,要求实现一个基于树结构的数据结构,并进行一些基本的操作。

数据结构说明

题目要求实现的数据结构为一个基于树结构的结构体,定义如下:

struct TreeNode {
    int val;
    TreeNode *left;
    TreeNode *right;
    TreeNode(int x) : val(x), left(NULL), right(NULL) {}
};

其中,val表示节点的信息,left和right分别表示左孩子和右孩子。

接口设计

在该题目中,需要实现以下接口:

1. addNode(int val)

在该接口中,需要向树结构中添加一个新节点,并保证树的结构不变。如果val在树中已经存在,则不需要做任何操作。

void addNode(int val);
2. deleteNode(int val)

在该接口中,需要删除树中值为val的节点,并保证树的结构不变。如果不存在值为val的节点,则不需要做任何操作。

void deleteNode(int val);
3. findNode(int val)

在该接口中,需要查找树中是否存在值为val的节点。如果存在,则返回该节点;否则,返回NULL。

TreeNode* findNode(int val);
4. printTree()

在该接口中,需要对树进行遍历,并打印出每个节点的信息。

void printTree();
实现方案

该题目可以通过实现一个二叉查找树来完成。在该树中,每个节点的值大于其左子树的所有节点的值,小于其右子树的所有节点的值。因此,可以利用二叉查找树的特性来实现上述接口。

具体实现细节详见代码实现